Comment faire pour résoudre les 400 bad request error dans WCF

Je suis un WCF biginner.
J'ai fait un simple Service WCF et un client de téléchargement de fichiers. Mais j'ai eu 400 bad request lors d'un téléchargement de plus de 100 KO.
J'ai cherché sur internet et trouvé une résolution sur la modification max*Longueur ou max**la taille. Mais je suis toujours en difficulté.

Alors, j'aimerais demander à des experts de la façon de résoudre le problème.

Code de Service est ici.

[ServiceContract]
public interface IService1
{

    [OperationContract]
    void SaveFile(UploadFile uploadFile);
}


[DataContract]
public class UploadFile
{
    [DataMember]
    public string FileName { get; set; }

    [DataMember]
    public byte[] File { get; set; }
}


public class Service1 : IService1
{

    public void SaveFile(UploadFile uploadFile)
    {
        string str = uploadFile.FileName;
        byte[] data = uploadFile.File;
    }
}

De configuration de Service est ici.

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime maxRequestLength="64000000"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <bindings>
      <webHttpBinding>
        <binding maxBufferSize="64000000" maxReceivedMessageSize="64000000" maxBufferPoolSize="64000000">
          <readerQuotas maxDepth="64000000" maxStringContentLength="64000000" maxArrayLength="64000000" maxBytesPerRead="64000000" />
          <security mode="None"/>
        </binding>
      </webHttpBinding>
    </bindings>
  </system.serviceModel>

 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Code du Client est ici.

private void button1_Click(object sender, RoutedEventArgs e)
{
    FileInfo info = new FileInfo(@"C:\Users\shingotada\Desktop.png");

    byte[] buf = new byte[32768];
    Stream stream = info.OpenRead();
    byte[] result;

    using (MemoryStream ms = new MemoryStream())
    {
        while (true)
        {
            int read = stream.Read(buf, 0, buf.Length);
            if (read > 0)
            {
                ms.Write(buf, 0, read);
            }
            else
            {
                break;
            }
        }
        result = ms.ToArray();
    }

        UploadFile file = new UploadFile();
        file.File = result;
        file.FileName = "test";

        ServiceReference2.Service1Client proxy2 = new ServiceReference2.Service1Client();
        proxy2.SaveFile(file);  //400 bad request
}

de configuration du client est ici.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="64000000"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://localhost:53635/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="ServiceReference2.IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

Grâce.

OriginalL'auteur Shingo Tada | 2012-04-18