2015-08-13 16 views
5

Mam fragment kodu, w którym są 2 sekwencyjne wywołania starego, dobrego, starego serwisu sieciowego ASMX.Zadzwoń do webmethod usługi webowej wyrzuca HTTP/1.1 404 Not Found

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

Zadzwoń pod numer A - wszystko w porządku. Ale wywołanie B rzuca 404... not found... W odkryciu obie metody są widoczne i wydają się w porządku - widzę obie w IE, metadane wygląda dobrze. Umieściłem punkt przerwania w B i zdecydowanie nie uderzam. Przebudowałem referencję Update Web Service podczas spożywania projektu i przebudowałem go.

Status to WebExceptionStatus.ProtocolError.

Podpis braku internetowej Metoda

<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 

połączenia jest (zweryfikowane)

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

Ponownie WebMethod B nie została osiągnięta. Web referencyjny proxy i wszystko - dobrze wyglądać. Co to może być?

+0

Pokaż nam kod – Karthik

+0

Prawdopodobnie masz zły adres URL dla swojej usługi spróbuj ustawić adres URL usługi, aby poprawić adres URL usługi. URl = "http: // /directory/service1.asmx"; – Adil

+0

@Adil Dokładnie to zrobiono. Ulr jest ustawiony przed wywołaniem "A" i "B" –

Odpowiedz

5

Rozwiązałem problem. To było mylące odkąd dostałem HTTP/1.1 404 Not Found i WebExceptionStatus.ProtocolError.

Raz zaczepione-up Fiddler2 byłem kopanie w nim i znaleźć WebView, w którym wyraźnie mówi:

• Zapytanie filtrowanie jest skonfigurowany na serwerze sieci Web, aby odrzucić żądanie, ponieważ długość zawartości przekracza skonfigurowaną wartość.

Aby rozwiązać problem, zmieniłem konfigurację w IIS, aby umożliwić otrzymanie 50 MB wniosków.

Edit request propertues

I ty też chcesz mieć następujące ustawienie w web.config

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

ustawienie Max jest 2097151 KB

404 było mylące. Brzmiało to jak problem z usługą sieciową, podczas gdy w rzeczywistości była to wielkość żądania. A kiedy powiedziałem, że zadziałało wcześniej, dzieje się tak po prostu dlatego, że wcześniej nie zapisywałbym tak dużych obiektów, jakie mam do tej pory.

+0

Niezwykle straszne, że rozmiar żądania spowodował błąd HTTP 404. Po prostu koszmarne doświadczenie. Przesyłałem również plik jako tablicę bajtów w argumencie metody sieci, który przekraczał skonfigurowany rozmiar w IIS. Dzięki, że nam pomogłeś. – RBT

+0

@RBT Może być po prostu sposobem Microsoftu, aby trochę zaciemniać rzeczy. Jeśli jesteś prawdziwym klientem, możesz wiedzieć, że możesz przesłać plik tylko do określonego rozmiaru. Ale jeśli jesteś jakimś hakerem i po prostu sondujesz rzeczy, dostajesz 404 i "ah, nie możesz tego zrobić". Kto wie? –