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 :
Et voici le code du WCF :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 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<AsyncCompletedEventArgs>(UploadFile); client.UploadFileAsync(fileName, buffer); } void UploadFile(object sender, AsyncCompletedEventArgs e) { }
Et le web.config du WCF :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 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); } }); }
Ce code marche très bien pour l'envoi de fichiers de petites tailles mais pour un fichier de 28Ko ça ne marche plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <system.serviceModel> <bindings> <basicHttpBinding> <binding name="Binding1" maxBufferSize="334217728" maxBufferPoolSize="52428800" maxReceivedMessageSize="334217728" transferMode="Streamed"> <readerQuotas maxArrayLength="100000000" maxStringContentLength="100000000"/> </binding> </basicHttpBinding> </bindings> <services> <service name="Appli.WCFService.Service1" behaviorConfiguration="Appli.WCFService.Service1Behavior"> <endpoint address="" binding="basicHttpBinding" contract="DataPrintBox.WCFService.IService1"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> <behaviors> <serviceBehaviors> <behavior name="Appli.WCFService.Service1Behavior"> <!-- Pour éviter la divulgation des informations sur les métadonnées, définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement --> <serviceMetadata httpGetEnabled="true" /> <serviceCredentials> <clientCertificate> <authentication mapClientCertificateToWindowsAccount="true" /> </clientCertificate> </serviceCredentials> <!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Définissez-la sur false avant le déploiement pour éviter la divulgation des informations d'exception --> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>
Il me fait une exception(Pas d'éxception dans les log du WCF).Le serveur distant a retourné une erreur : NotFound.
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
Partager