2009-06-17 14 views
6

Estoy intentando llamar a un servicio WCF a través de mex desde una página ASP clásica. Tengo la llamada de trabajo utilizando los datos de MSDN, pero si paso hacia atrás una cantidad de datos que excedan 8K consigo una excepción indicando:"la máxima cuota de longitud de contenido de cadena (8192) se ha excedido al leer datos XML" llamando a WCF a través de mexiker moniker

La cadena máxima longitud del contenido cuota (8192) se ha excedido al leyendo datos XML. Esta cuota puede aumentó cambiando la propiedad MaxStringContentLength en los XmlDictionaryReaderQuotas objeto utilizado cuando se crea el lector XML ...

La solución a esto es bastante fácil de cliente .NET: se puede ajustar el cliente config para tener un enlace con una sección readerQuotas que incluye una cuota incrementada. Sin embargo, dado que estoy creando un moniker de servicio para pasar a una llamada GetObject dentro de ASP, no tengo acceso a una configuración para editar. Si fuera una aplicación VB6, podría usar dllhost.exe.config, pero ese no es el caso. El nodo bindingConfiguration (y los nodos secundarios) no parecen ser parámetros que puedo establecer dentro de la cadena moniker.

¿Alguna idea sobre cómo podría influir en este parámetro dentro del contexto ASP? Fragmento de ASP con una cadena de moniker a la que se hace referencia a continuación:

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") 

¡Gracias!

Respuesta

2

Intente configurar su maxStringContentLength en su configuración de enlace wcf en el lado del servidor.

0

Tengo entendido que el servicio: mexAddress moniker en realidad utiliza un cliente WCF detrás de la interfaz COM. Si ese es el caso, entonces puede almacenar la configuración de WCF en un archivo llamado «foo» .exe.config, donde «foo» se sustituye por el nombre del ejecutable.

Si está ejecutando la ASP dentro de IIS6 o IIS7, entonces el EXE que ejecuta la ASP es probablemente w3wp.exe, lo que significa que debe colocar la configuración en un archivo llamado w3wp.exe.config, ubicado en el directorio c: \ Windows \ system32 \ inetsrv.

+0

Esta es una buena sugerencia, lamentablemente no he podido hacer que funcione. Mi entorno tiene que ser compatible con IIS 5.1, así que probé el mismo enfoque con un archivo inetinfo.exe.config, pero todavía no hay dados. Incluso intenté dejar caer mi información vinculante en la máquina. Configuré sin suerte. – Thermite

Cuestiones relacionadas