2

I try to build the following uri

http://localhost:8080/TestService.svc/RunTest

I do it as following

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);

The above generates an exception

Invalid URI: The hostname could not be parsed.

I`ll appreciate your help in solving the issue

Dave
  • 8,163
  • 11
  • 67
  • 103
YAKOVM
  • 9,805
  • 31
  • 116
  • 217

2 Answers2

2

When using the Uri builder you need to put the host, port & path as it's own line. Also TestService.svc is also part of the path and not the host, you can get away with it if not using port but with port they have to be separated out.

var uriBuilder = new UriBuilder();
uriBuilder.Host = "localhost";
uriBuilder.Port = 8080;
uriBuilder.Path = String.Format("/{0}/{1}", "TestService.svc", "RunTest");
var address = uriBuilder.ToString();
CharlesNRice
  • 3,219
  • 1
  • 16
  • 25
1

When I run your code, I also see square brackets as the value for the address variable as you point out, but I don't see PerfTestService in the generated Uri, nor do I see why this would be?! I see:

http://[localhost:8080/TestService.svc]/RunTest

Since you already know the host and the path, I suggest you construct it as a string.

 var uriBuilder = new UriBuilder("http://localhost:8080/TestService.svc/RunTest");
 string address = uriBuilder.ToString();
 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
Dave
  • 8,163
  • 11
  • 67
  • 103