“读取XML数据时已超过”最大字符串内容长度配额(8192)“通过mexAddress名字对象调用WCF

时间:2009-06-17 18:08:44

标签: asp.net wcf

我正在尝试通过mex从传统的ASP页面调用WCF服务。我使用MSDN上的详细信息进行了呼叫,但是如果我传回超过8K的数据,我会得到一个例外说明:

  

最大字符串内容长度   超过了配额(8192)   读取XML数据。这个配额可能是   通过改变而增加   MaxStringContentLength属性   使用的XmlDictionaryReaderQuotas对象   在创建XML阅读器时......

在.NET客户端中,此操作的修复很容易:您可以将客户端配置调整为与readerQuotas部分绑定,包括增加的配额。但是,由于我正在构建一个服务名字对象以传递给ASP中的GetObject调用,因此我无法访问要编辑的配置。如果它是一个VB6应用程序,我可以使用dllhost.exe.config,但事实并非如此。 bindingConfiguration节点(和子节点)似乎不是我可以在名字对象字符串中设置的参数。

关于如何在ASP上下文中影响此参数的任何想法?带有名字字符串的ASP片段如下所示:

   Dim strXml, moniker, objProxy

   moniker="service:mexAddress='http://localhost/SomeApp/SomeServices/SomeService.svc/mex', "
   moniker=moniker + "address='http://localhost/SomeApp/SomeServices/SomeService.svc',"
   moniker=moniker + "contract=ISomeService, contractNamespace=http://foo.com, "
   moniker=moniker + "binding=WSHttpBinding_ISomeService, bindingNamespace=http://foo.com"

   Set objProxy = GetObject(moniker)

   strXml = objProxy.DoWork("foo", "bar")

谢谢!

2 个答案:

答案 0 :(得分:2)

尝试在服务器端的wcf绑定配置中设置maxStringContentLength。

答案 1 :(得分:0)

我的理解是服务:mexAddress名字对象实际上使用COM接口后面的WCF客户端。如果是这种情况,那么您可以将WCF配置存储在名为«foo».exe.config的文件中,其中«foo»被可执行文件的名称替换。

如果您在IIS6或IIS7中运行ASP,则运行ASP的EXE可能是w3wp.exe,这意味着您需要将配置放入名为w3wp.exe.config的文件中,该文件位于目录c中:\ WINDOWS \ SYSTEM32 \ INETSRV。