WCF REST 4.0最大字符串内容长度配额

时间:2011-09-09 19:42:35

标签: .net wcf asp.net-mvc-3 wcf-rest

我意识到这个问题已被问过“数十次”

https://stackoverflow.com/search?q=maxStringContentLength

但是,我仍然没有找到符合我需求的解决方案。我有一个 MVC3 应用程序连接到 REST应用程序,该应用程序是在WCF 4.0中构建的

到目前为止,我有......

<standardEndpoints>
  <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" crossDomainScriptAccessEnabled="true" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"  />
  </webHttpEndpoint>
</standardEndpoints>

REST服务器部分可以工作。它允许我传入一个带有长字符串值的大型模型作为其中一个属性。我从我的MVC应用程序验证了这一点,因为我发布了大量数据的模型,并看到数据在数据库中生成。

当应用程序完成帖子并尝试请求刚刚保存的数据时,我在尝试序列化模型时遇到了臭名昭着的错误......

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

我尝试过很多东西,比如

<bindings>
  <webHttpBinding>
    <binding>
      <readerQuotas maxStringContentLength="2147483647"/>
    </binding>
  </webHttpBinding>
</bindings>

我正在使用 WebChannelFactory 检索其余数据,然后创建一个到该界面的频道。

string uri = "http://localhost/RestService";
WebChannelFactory<IRestService> _cf = new WebChannelFactory<IRestService>(new Uri(uri));
IRestService service = _cf.CreateChannel();

但到目前为止还没有任何工作。我的MVC3应用程序中是否存在一些可以正确序列化模型的内容?

我知道WCF 4没有.svc文件,并且没有绑定等等,但是我不知道我需要在MVC应用程序中抛出什么来允许默认配置要改变REST。

1 个答案:

答案 0 :(得分:1)

查看this question答案中的代码,了解如何查看最大字符串长度设置。似乎这种方法对你有用。