2011-01-13 21 views
0

我有一个使用WebServiceHostFactory(REST)实现的WCF服务。当JSON对象有一个长字符串时,WCF(Rest)服务错误

我正在调用一个服务端点作为POST发送一个json对象,该对象具有一个字符串属性。

这工作到一定程度,但似乎如果该字符串的长度变得太长(不确定究竟有多长(8000字符的作品,但9000不......)我没有尝试,但'突破点'可能是8192)

我试图检查在回调这对于较小的字符串工作正常,但的StatusCode时的刺痛是“太长”下面的错误代码:

System.Net.WebException: The remote server returned an error: NotFound. 

回调代码:

var request = (HttpWebRequest)result.AsyncState; 
var response = (HttpWebResponse)request.EndGetResponse(result); 

我想弄清楚问题出在哪里,因为服务存在,我只在字符串太长时才得到这个。

它是json对象的大小吗?这是我的服务定义吗?这是WCF中的东西吗?

谢谢

回答

1

我认为它是来自读者配额的MaxStringContentLength属性的问题。它的默认值是8192确实可以在绑定配置更改值:

<system.serviceModel> 
    <bindings> 
    <webHttpBinding> 
     <binding name="LargeString"> 
     <readerQuotas maxStringContentLength="16000" /> 
     </binding> 
    </webHttpBinding> 
    </bindings> 
</system.serviceModel> 

参考您的端点配置此绑定配置:

<endpoint address="..." contract="..." binding="webHttpBinding" bindingConfiguration="LargeString" /> 

在WCF 4.0的情况下,你可以在绑定省略名定义,它应该用作所有webHttp端点的默认配置。

0

我可以想到一个原因而不知道它。也许你超过了最大消息长度?这可以在你的App.Config文件中设置。

如果您有大量的数据要传输,您可以使用流式处理或构建自己的API,就像游标在SQL中工作一样。

相关问题