我做了我的第一个WCF服务,我在这里接收必须处理的数据。当我一次发送大量的100mb肥皂消息数据时,会收到错误400 Bad Request的答复。
我尝试设置其他问题中引用的maxReceivedMessageSize,maxBufferSize,maxAllowedContentLength,readerQuotas,但似乎没有任何作用,或者只是使该服务根本不起作用。
这些是我的web.config中的当前设置
<services>
<service name="RMQServices.RMQ_WS1" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="webHttp" contract="RMQServices.RMQService" binding="basicHttpBinding" bindingConfiguration="myBasic" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="myBasic" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" sendTimeout="00:30:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxArrayLength="2147483647"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<requestFiltering>
<requestLimits maxAllowedContentLength="2147483647" />
</requestFiltering>
我是否仍缺少配置中的某些内容以使其正常工作并接受更大的请求?
编辑: 如果我通过服务引用发送数据,那么它甚至可以接受1GB的肥皂消息。但是,如果我尝试通过带有预建SOAP XML的HttpWebRequest发送它,那么它仍然会返回Bad Request。因此问题似乎出在我如何发送数据上。
答案 0 :(得分:0)
确保您的客户端配置也具有这些值
<client>
<endpoint address="[address]" binding="basicHttpBinding" bindingConfiguration="myBasic" contract="" name="Name" />
</client>
然后添加
<bindings>
<basicHttpBinding>
<binding name="myBasic" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" sendTimeout="00:30:00">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxArrayLength="2147483647"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
如果这不起作用,请从绑定中删除安全性,然后验证
答案 1 :(得分:0)
请尝试添加以下代码段。
<behaviors>
<serviceBehaviors>
<behavior name="mybehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.web>
<httpRuntime maxRequestLength="2147483647" executionTimeout="3600" />
</system.web>
</configuration>
此外,不要忘记在客户端和服务器端之间应用配置(您还应该在客户端和服务器端端点上都添加此配置)。
随时让我知道问题是否仍然存在。