Веб-сервисы C # - почему работает http://localhost//testservice (две косые черты)? - PullRequest
0 голосов
/ 03 июня 2009

Я пишу тестовый веб-сервис и заметил странный угловой случай. Если вы добавите две косые черты после порта, метод будет вызван в любом случае для localhost, localhost: 80, 127.0.0.1 и 127.0.0.1:80. Но если я попробую его на веб-сервере, на котором я разрабатываю (порт 55731), это не получится.

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

Вот конкретные случаи:

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

Есть идеи, почему это так? Я знаю, у меня должен быть только один слэш после порта, просто любопытно.

1 Ответ

2 голосов
/ 03 июня 2009

Это деталь реализации, специфичная для веб-сервера. Один сервер может объединять косые черты в одну косую черту, другой может искать каталог с пустой строкой в ​​качестве имени или выполняет проверку шаблона.

Я предполагаю, что ваш веб-сервер на порту 80 отличается от сервера на 55731, IIS имеет много отличий от devserver.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...