在400错误的请求
问题描述:
发送较大的物体到WCF结果我有一个单元测试,发送一个中等大的对象到WCF服务。如果我为该参数传递null,一切正常。当我发送一个填充对象时,我得到一个HTTP 400响应。在400错误的请求
WCF跟踪显示了这个错误:
The maximum message size quota for incoming messages (65536) has been exceeded.
不过,我已经拍成中的app.config为单元测试项目大小配置参数如下:
<basicHttpBinding>
<binding name="BasicHttpBinding_IMyAppService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="200000000" maxBufferPoolSize="200000000" maxReceivedMessageSize="200000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
我在想什么在我的配置中,将允许的消息大小提高到错误消息中看到的65536以上?
UPDATE:
Web服务主机的web.config文件中还设置了maxReceivedMessageSize到一个较大的值(我认为):
<binding name="basicHttpBindingConfig" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
答
如果我正确理解你的问题,你增加了单元测试的app.config中'maxReceivedMessageSize'的大小。实际上,您应该在您的单元测试代码中调用的Web服务的app.config/web.config中进行此更改。如果您在IIS中托管您的Web服务,那么它将是web.config。如果您在Windows服务主机,那么你需要做的的app.config(改变其被移动到您.exe.config文件与您的bin文件夹。
对不起,我离开的那部分我原来的问题我还设置了maxReceivedMessageSize在Web服务的web.config,问题与特定的配置更新。你看到你在哪里承载Web服务?如果在Windows服务托管,检查应用程序的名字呢? –
问题。 exe.config(其中,appname是您的应用程序名称)的配置设置。配置文件通常会自动时重新编译更新。 – KrishHari
现在,它在2010年VS一个网站项目托管有一个web.config为该项目(相关部分现在发布在问题中) –