Bonjour à tous,

Je tente d'uploader un tableau d'octet sur mon WebService, quand je lance le webservice en local sur mon poste, il n'y a pas d'erreur et le fichier est bien uploadé. Mais lorsque je déploie le Webservice sur mon serveur cela ne fonctionne plus.

J'ai un service uploadFichier avec :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    public interface IUploadFichier
    {
        [OperationContract]
        void DoWork();
 
        [OperationContract]
        void UploadFile(byte[] f, string fileName);
    }
}
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
    public class UploadFichier : IUploadFichier
    {
        public void DoWork()
        {
        }
        public void UploadFile(byte[] f, string fileName)
        {
 
            MemoryStream ms = new MemoryStream(f);
            FileStream fs = new FileStream(Path.Combine(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath, "fichier.txt"), FileMode.Create);
            ms.WriteTo(fs);
            ms.Close();
            fs.Close();
            fs.Dispose();
        }
 
    }
Puis l'appel sur mon client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void button1_Click_2(object sender, EventArgs e)
        {
            ServiceReference3.UploadFichierClient client = new ServiceReference3.UploadFichierClient();
            FileInfo fInfo = new FileInfo(@"c:\Fichier.txt");
            FileStream fStream = new FileStream(@"c:\Fichier.txt", FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fStream);
            long numBytes = fInfo.Length;
            byte[] data = br.ReadBytes((int)numBytes);
            br.Close();
            client.UploadFile(data, "Fichier.txt");
            fStream.Close();
            fStream.Dispose();
}
Le web.config :

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
39
40
41
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- Pour éviter la divulgation d'informations de métadonnées, définissez les valeurs ci-dessous sur false avant le déploiement -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- Pour recevoir les détails de l'exception dans les erreurs à des fins de débogage, définissez la valeur ci-dessous sur true. Pour éviter la divulgation d'informations d'exception, définissez-la sur false avant le déploiement -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
          <useRequestHeadersForMetadataAddress>
            <defaultPorts>
              <add scheme="http" port="33915" />
              <add scheme="https" port="33915" />
            </defaultPorts>
          </useRequestHeadersForMetadataAddress>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        Pour parcourir le répertoire racine de l'application Web lors du débogage, définissez la valeur ci-dessous sur true.
        Définissez-la sur false avant le déploiement pour ne pas divulguer d'informations du dossier de l'application Web.
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>
 
</configuration>

Je pense que le problème vient du Web.config, mais après de multiples recherches je reste coincé.

D'avance merci pour vos réponses.