0

私のクライアント アプリケーションは、ローカル IIS でホストされている WCF Web サービスを使用しています。この Web サービスは、画像のアップロードに使用します。画像サイズが大きくなると、悪いリクエスト(400)が返されます。

クライアントは、Web サービス URL を動的に取得するように構成されています。

クライアントコード

string serviceUrl=GetUrl();  /* http://localhost:85/ImageUploaderService.svc */

TimeSpan timeOut = new TimeSpan(0, 30, 0);

EndpointAddress endPoint = new EndpointAddress(serviceUrl);     


BasicHttpBinding binding = new BasicHttpBinding()
{
    CloseTimeout = timeOut,
    MaxReceivedMessageSize = 65536,
    OpenTimeout = timeOut,
    ReceiveTimeout = timeOut,
    SendTimeout = timeOut,
    MaxBufferSize = 65536,
    MaxBufferPoolSize = 524288,
    UseDefaultWebProxy = true,
};

binding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas()
{
    MaxArrayLength = 64000000,
    MaxStringContentLength = 8192,
    MaxDepth = 32,
    MaxNameTableCharCount = 16384,
    MaxBytesPerRead = 4096
};

client = new ImageUploaderServiceClient(binding, endPoint);  

Web サービス側

<basicHttpBinding>
    <binding maxBufferSize="64000000" maxReceivedMessageSize="64000000" maxBufferPoolSize="64000000">
      <readerQuotas maxDepth="64000000" maxStringContentLength="64000000" maxArrayLength="64000000" maxBytesPerRead="64000000" />
      <security mode="None"/>
    </binding>
  </basicHttpBinding>  

私がしている間違っていることは何ですか。正しい道を教えてください。

4

1 に答える 1

0

おそらく、クライアント側でも MaxReceivedMessageSize を増やす必要があります。

BasicHttpBinding binding = new BasicHttpBinding()
{
     MaxReceivedMessageSize = 64000000,
     MaxBufferSize = 64000000,
     MaxBufferPoolSize = 64000000,
// .....
};
binding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas()
{
    MaxArrayLength = 64000000,
    MaxStringContentLength = 64000000,
    MaxDepth = 64000000,
    MaxBytesPerRead = 64000000
};

私はかつて同じ問題を抱えていました - サーバーとクライアントのバインディング構成は同じでなければなりません。

于 2013-04-05T09:24:28.797 に答える