2009-06-02 4 views
0

Ich schreibe einen Test-Web-Service, und bemerkte eine seltsame Ecke Fall. Wenn Sie nach dem Port zwei Schrägstriche einfügen, wird die Methode trotzdem für localhost, localhost: 80, 127.0.0.1 und 127.0.0.1:80 aufgerufen. Aber wenn ich es auf dem Webserver versuche, den ich gerade entwickle (Port 55731), schlägt es fehl.C# -Webdienste - warum funktioniert http: // localhost // testservice (zwei Schrägstriche)?

localhost.Service1 s = new localhost.Service1(); 
string uri = "http://localhost//testService.asmx"; 
s.Url = uri; 
double result = s.multiply(5,5); 

Hier ist die spezifischen Fälle:

uri = "http://localhost//testService.asmx"; // works 
uri = "http://localhost:80//testService.asmx"; // works 
uri = "http://127.0.0.1//testService.asmx"; // works 
uri = "http://127.0.0.1:80//testService.asmx"; // works 
uri = "http://localhost:55731//testService.asmx"; // fails - HTTP status 400 - bad request 

Jede Idee, warum dies der Fall ist? Ich weiß, ich sollte nur einen Schrägstrich nach dem Hafen haben, nur neugierig.

Antwort

2

Es handelt sich um ein für einen Webserver spezifisches Implementierungsdetail. Ein Server kann die Schrägstriche zu einem einzigen Schrägstrich zusammenfassen, ein anderer Server sucht nach einem Verzeichnis mit einer leeren Zeichenfolge als Namen oder führt eine Musterprüfung durch.

Ich nehme an, Ihr Webserver auf Port 80 unterscheidet sich von dem auf 55731, IIS hat viele Unterschiede zum devserver.

Verwandte Themen