我有一个 C# 4.0 控制台应用程序,它调用位于 ASP.net 4.0 网站内的 WCF Web 服务。调用 Web 服务时,出现此错误:
The formatter threw an exception while trying to deserialize the message:
Error in deserializing body of request message for operation 'AddArticle'.
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 60, position 267.
所以环顾四周,您似乎需要将配置文件中的 maxStringContentLength 和 maxReceivedMessageSize 属性增加到一个很大的数字。我已经这样做了,但仍然收到错误。
我的控制台应用程序的配置是:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IXXXInterface" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01: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="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://axa-ppp/webservices/xxxinterface.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IXXXInterface" contract="XXX_YYYY_Interface.IXXXInterface" name="BasicHttpBinding_IXXXInterface"/>
</client>
来自网站的配置是:
<binding name="BasicHttpBinding_IXXXInterface" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01: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="5242880" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
和
<endpoint address="http://xxx-ppp/webservices/xxxinterface.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IXXXInterface" contract="XXX_YYYY_Interface.IXXXInterface" name="BasicHttpBinding_IXXXInterface"/>
编辑:
这是网站上的类文件:
public class XXXInterface : IXXXInterface
{
public bool AddArticle(string Title, string ArticleXml)
{
ContentData article = new ContentData();
article.Title = Title;
article.Html = ArticleXml;
article.FolderId = 320;
ContentData newArticle = contentMgr.Add(article);
if (newArticle == null)
{
return false;
}
else
{
return true;
}
}
}