Silverlight 3 WCF upload fichier [Résolu]

Signaler
Messages postés
22
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
5 octobre 2010
-
Messages postés
4
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
6 décembre 2010
-
Bonjour,

Je développe une application Silverlight 3 qui doit faire un upload de fichier vers un serveur, pour cela j'utilise un WCF.

Dans l'application Silverlight :
public void ExecuteParcourirBoutonCommand()
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image files (*.xls;*.xlsx)|*.xls;*.xlsx";
openFileDialog.Multiselect = false;
bool? resultDialog = openFileDialog.ShowDialog();
if (resultDialog == true)
{
byte[] bytes;
using (Stream str = openFileDialog.File.OpenRead())
{
bytes = new Byte[str.Length];
str.Read(bytes, 0, bytes.Length);
}
CreateUploadFile(openFileDialog.File.Name, bytes);
PublipostageFile = openFileDialog.File.Name;
}
}

private void CreateUploadFile(string fileName, byte[] buffer)
{
Service1Client client = new Service1Client();
client.UploadFileCompleted += new EventHandler(UploadFile);
client.UploadFileAsync(fileName, buffer);
}

void UploadFile(object sender, AsyncCompletedEventArgs e)
{
}

Et voici le code du WCF :
public void UploadFile(string fileName, byte[] input)
{
new LogCall(delegate
{
string Path = "XXXXX";
using (FileStream fs = File.Create(string.Format("{0}{1}", Path, fileName)))
{
fs.Write(input, 0, input.Length);
}
});
}

Et le web.config du WCF :






































Ce code marche très bien pour l'envoi de fichiers de petites tailles mais pour un fichier de 28Ko ça ne marche plus.
Il me fait une exception "Le serveur distant a retourné une erreur : NotFound." (Pas d'éxception dans les log du WCF).
Manifestement c'est un problème de taille mais j'ai réglé le web.config pour envoyer des fichiers de grandes tailles.
Quelqu'un a une idée ?

Merci

3 réponses

Messages postés
22
Date d'inscription
dimanche 5 avril 2009
Statut
Membre
Dernière intervention
5 octobre 2010

C'est bon j'ai trouvé :
J'avais oublié de modifier la balise endPoint dans le web.config du service :
<endpoint bindingConfiguration="Binding1" address="" binding="basicHttpBinding" contract="DataPrintBox.WCFService.IService1">

    <dns value="localhost" />

</endpoint>
Messages postés
4
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
6 décembre 2010

j'ai le meme probleme, j'ai remplacé ma version ultra simple :

<system.serviceModel>

<serviceBehaviors>

<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />

</serviceBehaviors>

<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

par celle indiquée plus haut mais aucune requete ne marche alors.

j'ai renomme le endpoint ainsi :

<service name="DataPrintBox.WCFService.ServerService" behaviorConfiguration="DataPrintBox.WCFService.Service1Behavior">
<endpoint address="" binding="basicHttpBinding" contract="DataPrintBox.WCFService.ServerService">

car j'ai nommé le service : ServerService et je n'ai pas de IService (tout est dans le meme fichier)

c peut etre la l'annerie, je ne sais pas... si qq un peut m'aider please
Messages postés
4
Date d'inscription
lundi 6 décembre 2010
Statut
Membre
Dernière intervention
6 décembre 2010

Bon voila le code qui fonctionne pour tout sauf pour l'envoi de requete de plus de 10ko... je desespere faute de comprendre comment fonctionne ce cirque

<system.serviceModel>



<readerQuotas maxArrayLength="100000000" maxStringContentLength="100000000"/>





<serviceBehaviors>

<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>

</serviceBehaviors>


<services>
<service behaviorConfiguration="ServiceBehavior" name="Service">
<endpoint address="" binding="basicHttpBinding" contract="Service" bindingConfiguration="Binding1"/>
</service>
</services>

</system.serviceModel>