我试图从一个经典的ASP页面通过mex调用WCF服务。我已经使用了MSDN上的详细信息来调用,但是如果我传回超过8K的数据量,就会得到一个异常,说明如下:
读取XML数据时已超出最大字符串内容长度配额(8192)。此配额可通过更改在创建XML读取器时使用的MaxStringContentLength对象上的XmlDictionaryReaderQuotas属性来增加。
在.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")谢谢!
发布于 2009-06-22 20:57:49
尝试在服务器端的wcf绑定配置中设置maxStringContentLength。
发布于 2009-06-23 01:05:28
我的理解是,服务:mexAddress实际上使用COM接口后面的WCF客户端。如果是这样的话,那么您可以将WCF配置存储在一个名为«foo».exe.config的文件中,其中foo被可执行文件的名称所替换。
如果在IIS6或IIS7中运行ASP,则运行ASP的EXE可能是w3wp.exe,这意味着需要将配置放到一个名为w3wp.exe.config的文件中,该文件位于目录c:\Windows\system32 32\inetsrv中。
https://stackoverflow.com/questions/1008691
复制相似问题