WebException HTTP 400 Bad Request a seconda delle dimensioni del file...

venerdì 07 gennaio 2005 - 10.22

vigori Profilo | Newbie

Salve,
da una nostra applicazione mi collego ad un web service (anche questo fatto da noi) per inviare, tra le altre cose, anche un file
utilizzando le estensioni Microsoft "Web Services Enhancements 2.0".

Il file web.config del web service presenta queste impostazioni per il timeout e per le dimensioni dell'allegato/messaggio:

httpRuntime executionTimeout="1800"
maxRequestLength="5000"
/

Sembra che tutti funzioni perfettamente, in quanto sia nel caso in cui venga superato il timeout o la dimensione massima (5000 Kb) si genera la giusta eccezione: System.Web.Services.Protocols.SoapException..

Il problema è quando in allegato c'è un file che supera i 4096 kbyte ed è minore del valore settato in maxRequestLength (ad esempio 5000 kb), in questo caso si genera questa eccezione:

System.Net.WebException: The request failed with HTTP status 400: Bad Request
at
System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String
methodName, Object[] parameters)

Ho provato a cercare qualche limite un pò dappertutto nei file di configurazione (machine.config, metabase.xml, ..) in quanto questa anomalia inizia con dimensioni maggiori di 4096 kbyte (ovvero 4Mb). E' possibile che ci siano delle restrizioni sui messaggi SOAP?

La configurazione del server è:
Windows 2003
IIS 6.0
Web Services Enhancements 2.0

Grazie

Paolo



Brainkiller Profilo | Guru

Ciao Paolo,
per caso gli allegati vengono codificati in Base64 ?

ciao
david

vigori Profilo | Newbie

ciao,
non credo sia un problema di codifica perchè per fare i test genero l'allegato in questo modo

Dim cap As Integer = Integer.Parse(TextBox1.Text)
Dim m As New IO.MemoryStream(cap * 1024)

For i As Integer = 1 To cap * 1024
m.WriteByte(0)
Next

m.Flush()

Dim attachment As New Attachment("application/dime", m)
ws.RequestSoapContext.Attachments.Add(attachment)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5