我正在编写一个测试Web服务,并注意到一个奇怪的角落案例。如果在端口后包含两个斜杠,则无论如何都将为localhost,localhost:80,127.0.0.1和127.0.0.1:80调用该方法。但是,如果我在我正在开发的Web服务器上尝试它(端口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
知道为什么会这样吗?我知道我应该在港口之后只有一个斜线,只是好奇。
答案 0 :(得分:2)
这是特定于Web服务器的实现细节。一个服务器可以将斜杠合并为一个斜杠,另一个服务器可以查找一个名为空字符串的目录,或者对其进行模式检查。
我假设您的端口80上的Web服务器与55731上的网络服务器不同,IIS与devserver有很多不同。