2009-06-17 10 views
6

Sto tentando di chiamare un servizio WCF tramite messico da una pagina ASP classica. Ho il lavoro utilizzando i dati sulla MSDN chiamata, ma se passo indietro una quantità di dati superiore a 8K ottengo un'eccezione affermando:"La lunghezza massima del contenuto della stringa (8192) è stata superata durante la lettura dei dati XML" chiamando WCF tramite mexAddress moniker

La stringa di lunghezza massima di contenuto quota (8192) è stato superato, mentre lettura dati XML. Questo contingente può essere aumentata modificando la proprietà MaxStringContentLength sulle XmlDictionaryReaderQuotas usato durante la creazione del lettore XML ...

La correzione di questo è abbastanza facile in client .NET: è possibile regolare il cliente config per avere un'associazione con una sezione readerQuotas che include una quota aumentata. Tuttavia, poiché sto creando un moniker di servizi per passare a una chiamata GetObject all'interno di ASP, non ho accesso a una configurazione da modificare. Se fosse un'app VB6, potrei usare dllhost.exe.config, ma non è questo il caso. Il nodo bindingConfiguration (e i sottonodi) non sembrano essere parametri che posso impostare all'interno della stringa moniker.

Qualche idea su come poter influenzare questo parametro all'interno del contesto ASP? Snippet ASP con stringa di moniker referenziata di seguito:

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

Grazie!

risposta

2

Provare a impostare maxStringContentLength nella configurazione del binding wcf sul lato server.

0

È a mia conoscenza che il servizio: mexAddress moniker utilizza effettivamente un client WCF dietro l'interfaccia COM. In tal caso, è possibile memorizzare la configurazione di WCF in un file denominato «foo» .exe.config, in cui «foo» viene sostituito dal nome dell'eseguibile.

Se si esegue l'ASP in IIS6 o IIS7, l'EXE che esegue l'ASP è probabilmente w3wp.exe, il che significa che è necessario rilasciare la configurazione in un file denominato w3wp.exe.config, situato nella directory c: \ Windows \ system32 \ inetsrv.

+0

Questo è un buon suggerimento, sfortunatamente non sono riuscito a farlo funzionare. Il mio ambiente deve supportare IIS 5.1, quindi ho provato lo stesso approccio con un inetinfo.exe.config ma ancora nessun dado. Ho persino provato a rilasciare le informazioni di binding nella macchina.config senza fortuna. – Thermite

Problemi correlati