0

IIS で WCF WF をホストしました。クライアント側から IIS のサービスにアクセスしようとしていますが、次のようなエラーが発生します。

The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'GetData'. The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 197, position 41.

これは私のweb.configです:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="DataAccess.SharePoint.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <applicationSettings>
    <DataAccess.SharePoint.Properties.Settings>
      <setting name="DataAccess_SharePoint_Officecms_Lists" serializeAs="String">
        <value>http://site/_vti_bin/lists.asmx</value>
      </setting>
    </DataAccess.SharePoint.Properties.Settings>
  </applicationSettings>
</configuration>

これは私のクライアント app.config です:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService" closeTimeout="00:01:00"
                    openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
                    maxReceivedMessageSize="2147483647" messageEncoding="Text"
                    textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" 
                                  />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://server2008/Services/Search.xamlx"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
                contract="SearchService.IService" name="BasicHttpBinding_IService" />
        </client>
    </system.serviceModel>
</configuration>

私の設定を確認し、私が間違っていたことを修正して説明していただけますか?

4

1 に答える 1

0

サーバーまたはクライアントでこのメッセージを受け取りますか? クライアントからサーバーへのメッセージが既定の制限よりも大きい場合は、web.config でそれを増やす必要があります。

これを system.ServiceModel セクションに追加することで、web.config でバインドを制御できます。

  <bindings>
      <basicHttpBinding>
        <binding>
          <readerQuotas maxStringContentLength ="<your max here>"/>
        </binding>
      </basicHttpBinding>
    </bindings>
于 2012-07-04T19:28:39.523 に答える