首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript to WCF - MaxStringContentLength异常

Javascript to WCF - MaxStringContentLength异常
EN

Stack Overflow用户
提问于 2012-02-10 11:23:33
回答 2查看 523关注 0票数 0

我正在使用jQuery/JavaScript客户端向WCF REST服务(webHttpEndpoint)发送AJAX请求,并收到以下异常...

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

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

代码语言:javascript
复制
  <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>

我已经尝试添加以下binding.....however,它不会生效...

代码语言:javascript
复制
  <webHttpBinding>
    <binding name="webHttpBindingDev">
      <readerQuotas maxDepth="2147483647"
                    maxStringContentLength="2147483647"
                    maxArrayLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647" />
    </binding>
  </webHttpBinding>

你能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2012-02-11 01:14:31

我认为需要在standardEndPoints中对以下内容进行更改

代码语言:javascript
复制
<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name=""
                      crossDomainScriptAccessEnabled="false"
                      helpEnabled="true"
                      automaticFormatSelectionEnabled="true">
      <readerQuotas maxDepth="2147483647"
                    maxStringContentLength="2147483647"
                    maxArrayLength="2147483647"
                    maxBytesPerRead="2147483647"
                    maxNameTableCharCount="2147483647" />       
    </standardEndpoint>
  </webHttpEndpoint>
</standardEndpoints>
票数 1
EN

Stack Overflow用户

发布于 2012-02-10 17:01:25

如果要覆盖绑定的默认值,则需要将绑定名称分配给<service>部分中<endpoint>元素的bindingConfiguration属性,如下所示:

代码语言:javascript
复制
<services>
  <service name="MyService">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="MembershipBinding" contract="MyService.IMyContract" />
  </service>
</services>

<services>部分位于<system.serviceModel>部分。

我不能100%确定这是否适用于RESTful WCF,但从我所做的研究来看,它似乎应该有效。

需要记住的重要一点是,您必须告诉服务对给定端点使用什么绑定,如果您需要该绑定上的设置值而不是默认值,则需要将您设置的绑定分配给该端点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9222271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档