我正在尝试通过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")
谢谢!
答案 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。