2015-08-13 10 views
5

Ho un pezzo di codice in cui ci sono 2 chiamate in sequenza a un buon vecchio servizio web ASMX.Chiamata al servizio web webmethod lancia HTTP/1.1 404 non trovata

service.Url = "http://....."; 
service.A(1, 2, 3); 
service.B(4, 5, 6); 

Chiama a A va bene. Ma chiama a B genera 404... not found... Nella scoperta, entrambi i metodi sono visibili e sembrano buoni - Vedo entrambi in IE, i metadati sembrano buoni. Ho inserito il punto di interruzione nel B e non sta andando a segno. Ho ricostruito, riferimento Update Web Service nel progetto di consumo e lo ho ricostruito.

Lo stato è WebExceptionStatus.ProtocolError.

Firma di fallire web Metodo

<WebMethod(Description:="Store a fragment of object on server.")> _ 
Public Function B(
    ByVal p1 As String, 
    ByVal p2 As String, 
    ByVal p3() As Byte, 
    ByVal p4 As Integer, 
    ByVal p5() As Byte) As Boolean 

La chiamata viene (verificata)

bool result = service.B(string, string, byteArray1, int, byteArray2); 

Nuovamente, WebMethod B non viene raggiunto. Proxy di riferimento Web e tutto - guarda bene. Cosa può essere?

+0

Mostraci del codice – Karthik

+0

Probabilmente hai un URL errato per il tuo servizio prova a impostare l'URL del servizio per correggere url lik service.Url = "http: // /directory/service1.asmx"; – Adil

+0

@Adil Questo è esattamente ciò che è stato fatto. Ulr è impostato prima delle chiamate a 'A' e' B' –

risposta

5

Ho risolto. Era confuso da quando stavo ottenendo HTTP/1.1 404 Not Found e WebExceptionStatus.ProtocolError.

Una volta ho collegato-up Fiddler2, stavo scavando in esso e trovato WebView, in cui si dice chiaramente:

• Richiesta di filtraggio è configurato sul server Web per negare la richiesta perché la lunghezza del contenuto supera il valore configurato.

Per risolvere il problema, ho modificato la configurazione in IIS per consentire richieste da 50 MB.

Edit request propertues

E anche voi volete avere seguente impostazione nel web.config

<httpRuntime maxRequestLength="1000000" executionTimeout="3000"/> 

impostazione Max è 2097151 KB

404 era confusa. Sembrava un problema con il servizio web, mentre in realtà era la dimensione della richiesta. E quando ho detto che ha funzionato prima, è semplicemente perché prima non avrei salvato oggetti così grandi come non ho ora.

+0

Estremamente orribile sapere che la dimensione della richiesta stava causando l'errore HTTP 404. Semplicemente un'esperienza da incubo. Stavo anche caricando un file come array di byte nell'argomento del metodo web che superava la dimensione configurata in IIS. Grazie per averci aiutato. – RBT

+0

@RBT Potrebbe essere solo il modo Microsoft di oscurare un po 'le cose. Se sei un vero cliente, potresti sapere che puoi caricare solo file di dimensioni specifiche. Ma se sei un hacker e stai solo sondando le cose, ottieni 404 e "ah, non posso farlo". Chissà? –

Problemi correlati