我尝试构建以下uri
http://localhost:8080/TestService.svc/RunTest
我按照以下方式执行
var uriBuilder = new UriBuilder();
uriBuilder.Host = "localhost:8080/TestService.svc";
uriBuilder.Path = String.Format("/{0}", "RunTest");
string address = uriBuilder.ToString()
//In debugger the address looks like http://[http://localhost:8080/TestService.svc]/RunTest
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(address);
以上生成异常
Invalid URI: The hostname could not be parsed.
我将非常感谢您帮助解决问题
答案 0 :(得分:2)
使用Uri构建器时,您需要放置主机,端口和放大器。路径,因为它自己的路线。此外,TestService.svc也是路径的一部分,而不是主机,如果不使用端口,你可以侥幸使用它,但是端口必须分开。
var uriBuilder = new UriBuilder();
uriBuilder.Host = "localhost";
uriBuilder.Port = 8080;
uriBuilder.Path = String.Format("/{0}/{1}", "TestService.svc", "RunTest");
var address = uriBuilder.ToString();
答案 1 :(得分:0)
当我运行您的代码时,我也会看到方括号作为address
变量的值,但是我没有在生成的Uri中看到PerfTestService
,也没有我知道为什么会这样?!我明白了:
http://[localhost:8080/TestService.svc]/RunTest
由于您已经知道主机和路径,我建议您将其构建为字符串。
var uriBuilder = new UriBuilder("http://localhost:8080/TestService.svc/RunTest");
string address = uriBuilder.ToString();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);