WCF客户端请求返回错误请求(400)

本文关键字:请求 返回 客户端 WCF 错误 | 更新日期: 2023-09-27 18:07:37

我的客户端应用程序使用托管在本地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>  

我做错了什么?请给我指路

WCF客户端请求返回错误请求(400)

您应该在客户端增加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
};

我曾经有过同样的问题-服务器和客户端绑定配置应该是相同的