4

我有一个接受 JSON 字符串实体的 WCF 服务,这是方法:

更新:我解决了这个问题,因为这与 WCF 服务无关,而是与我使用的 GSON 格式有关,因为它没有格式化像“ù”这样的特殊字符,并且服务器拒绝接受这个字符。

 <WebInvoke(UriTemplate:="UpdateUser", ResponseFormat:=WebMessageFormat.Json, RequestFormat:=WebMessageFormat.Json, Method:="POST", BodyStyle:=WebMessageBodyStyle.WrappedRequest)> _
Public Function UpdateUser(user As String) As Stream Implements IService1.UpdateUser

End Function

如果我尝试通过 JAVA HttpClient 使用下面的代码和短 JSON 字符串发布 JSON 字符串,则一切正常,但如果 JSON 字符串的大小更大,则 IIS 7.5 响应为:

-MODULE_SET_RESPONSE_ERROR_STATUS ModuleName ManagedPipelineHandler Notification 128 HttpStatus 400 HttpReason Bad Request HttpSubStatus 0 ErrorCode 0 ConfigExceptionInfo Notification EXECUTE_REQUEST_HANDLER ErrorCode Operazione completata。(0x0)

我已经尝试在 Web.Config 中使用 MaxReceivedMessageSize 和其他大小设置,但没有成功。

这是我的 Web.Config 文件

 <services>
  <service name="WBVoice4Facebook.Service1" behaviorConfiguration="ServiceBehaviour">
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="StreamedRequestWebBinding" contract="WBVoice4Facebook.IService1" behaviorConfiguration="web">
    </endpoint>
  </service>
 </services>

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <dataContractSerializer maxItemsInObjectGraph="2147483646" />
      <webHttp />
    </behavior>
  </endpointBehaviors>
</behaviors>

<bindings>
  <netMsmqBinding>
    <binding name="NewBinding0">
      <security>
        <transport msmqAuthenticationMode="None" msmqProtectionLevel="None" />
      </security>
    </binding>
  </netMsmqBinding>
  <webHttpBinding>
    <binding name="StreamedRequestWebBinding" 
             openTimeout="10:15:00" 
             receiveTimeout="10:15:00" 
             sendTimeout="10:15:00" 
             bypassProxyOnLocal="true" 
             hostNameComparisonMode="WeakWildcard"
             maxBufferSize="2147483647" 
             maxBufferPoolSize="2147483647" 
             maxReceivedMessageSize="2147483647" 
             transferMode="Streamed" 
             useDefaultWebProxy="false">
      <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="InheritedFromHost" />
      </security>
    </binding>
  </webHttpBinding>
</bindings>
4

1 回答 1

0

asp.net 运行时也有限制。更多信息在这里

于 2012-09-14T11:56:23.620 回答