2012-02-10 61 views
0

我使用一个jQuery/JavaScript客户端AJAX中的请求,WCF REST服务(webHttpEndpoint),我收到以下异常发送...Javascript来WCF - MaxStringContentLength异常

System.Xml.XmlException:在在读取XML数据时超出了最大字符串内容长度限额(8192)。可以通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxStringContentLength属性来增加此配额。

这里是我的system.serviceModel web.config中定义...

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
           multipleSiteBindingsEnabled="true" /> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="MembershipBinding"> 
      <security mode="TransportWithMessageCredential"> 
      <message clientCredentialType="UserName" /> 
      </security> 
     </binding> 
     <binding name="userHttps"> 
      <security mode="Transport" /> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="CommonSvcBehavior"> 
      <serviceCredentials> 
      <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" 
            membershipProviderName="AspNetSqlMembershipProvider" /> 
      </serviceCredentials> 
      <serviceAuthorization principalPermissionMode="UseAspNetRoles" 
           roleProviderName="MySqlRoleProvider" /> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     <behavior name="AuthenticationServiceTypeBehaviors"> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <standardEndpoints> 
     <webHttpEndpoint> 
     <standardEndpoint name="" 
          crossDomainScriptAccessEnabled="false" 
          helpEnabled="true" 
          automaticFormatSelectionEnabled="true" /> 
     </webHttpEndpoint> 
    </standardEndpoints> 
    </system.serviceModel> 

我已经尝试添加以下绑定.....但它不生效?

<webHttpBinding> 
    <binding name="webHttpBindingDev"> 
     <readerQuotas maxDepth="2147483647" 
        maxStringContentLength="2147483647" 
        maxArrayLength="2147483647" 
        maxBytesPerRead="2147483647" 
        maxNameTableCharCount="2147483647" /> 
    </binding> 
    </webHttpBinding> 

你能帮忙吗?

+0

十个问题,没有一个公认的答案? – 2012-02-10 03:57:47

回答

0

如果要覆盖默认值的绑定,你需要绑定的名字在<service>部分分配给<endpoint>元素的bindingConfiguration属性,像这样:

<services> 
    <service name="MyService"> 
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MembershipBinding" contract="MyService.IMyContract" /> 
    </service> 
</services> 

<services>节进去<system.serviceModel>部分。

我不是100%确定这将适用于RESTful WCF,但从研究我做它似乎应该。

要记住的重要一点是,您必须告诉服务对于给定端点使用何种绑定,并且如果您需要的绑定设置值不是默认值,则需要将绑定分配给您设置为端点。

1

我想通了.....下面需要在standardEndPoints改变

<standardEndpoints> 
    <webHttpEndpoint> 
    <standardEndpoint name="" 
         crossDomainScriptAccessEnabled="false" 
         helpEnabled="true" 
         automaticFormatSelectionEnabled="true"> 
     <readerQuotas maxDepth="2147483647" 
        maxStringContentLength="2147483647" 
        maxArrayLength="2147483647" 
        maxBytesPerRead="2147483647" 
        maxNameTableCharCount="2147483647" />  
    </standardEndpoint> 
    </webHttpEndpoint> 
</standardEndpoints>