2014-07-07 28 views
6

Web Service è un servizio ASMX Web (NON WCF)ASMX riferimento al servizio Web come impostare equivalente a MaxReceivedMessageSize

Sto ricevendo un errore

La quota massima dimensione del messaggio per i messaggi in arrivo (65536) è stato superato Per aumentare la quota, utilizzare la proprietà MaxReceivedMessageSize sull'elemento di rilegatura appropriato

Sto usando un proxy che Visual Studio genera per voi quando si aggiunge un "riferimento Web" (si prega di notare che io non sono l'aggiunta di "Servizio di riferimento ", invece sto usando il riferimento Web) ... questo crea un proxy che eredita da SoapHttpClientProtocol

Qualcuno può aiutarmi a capire come impostare l'equivalente a MaxReceivedMessageSize per questo metodo? (Sto chiedendo l'equivalente di fare HttpBinding.MaxReceivedMessageSize = Int32.MaxValue se stavo usando WCF)

+0

Potrebbe postare il file di configurazione? – DBK

risposta

2

Questo messaggio è specifico per WCF. Sospetto che tu stia chiamando il tuo servizio ASMX tramite un proxy client WCF (la classe client eredita dallo ClientBase). D'altra parte, un tipico client proxy ASMX eredita da SoapHttpClientProtocol.

Il trucco è che se si aggiunge "Riferimento servizio" da Visual Studio, il proxy simile a WCF viene creato per impostazione predefinita. Per creare un proxy vecchio tipo, fare clic su "Avanzate" nella finestra di dialogo del proxy proxy e quindi su "Aggiungi riferimento servizio" nella finestra di dialogo delle proprietà avanzate oppure richiamare lo strumento wsdl.exe dalla riga di comando.

Il proxy creato in un "vecchio" non ha quote di messaggio.

Tuttavia, utilizzando la tecnologia legacy ASMX, sia per il server che per il client, non è consigliabile.

+0

Grazie per la risposta Wiktor ... sì sto usando "vecchio" (Aggiungi riferimento servizio> Avanzate> Aggiungi riferimento web). questo crea un proxy che eredita da SoapHttpClientProtocol – Gustavo

+0

C'è qualche documentazione che suggerisce che non ci sono quote di messaggio per questo "vecchio" modo? – Gustavo

+0

L'ho usato per anni e non c'era questa limitazione. L'eccezione generata dal proxy client o dal server allora? –

4

La modifica di MaxReceivedMessageSize può essere eseguita nel file App.config o nel codice sorgente prima di chiamare il metodo del servizio.

BasicHttpBinding httpBinding = youAddWebServiceName.ChannelFactory.Endpoint.Binding as BasicHttpBinding; 
httpBinding.MaxReceivedMessageSize = int.MaxValue; 
+0

Questo è stato estremamente utile. Grazie. – Serinus

4

forse aiuta qualcuno. Ricevo lo stesso messaggio di errore nel servizio Web ASMX ma non è dal server! è stato dal client e ho appena aggiunto questo al client di configurazione:

<basicHttpBinding> 
<binding name="BindingName" maxBufferPoolSize="20000000" maxReceivedMessageSize="20000000" maxBufferSize="20000000" /> 
</basicHttpBinding>