在ping时,URL会起作用,但会导致UriFormatException

时间:2014-12-01 16:55:59

标签: c# uri

我有一个邮件服务器,我正在尝试连接到交换Web服务。如果我ping服务器,它可以工作,但在代码中提供时会得到UriFormatException

在命令提示符下工作但在c#

中失败的网址
  • myserver.mydomain.com
  • myserver
  • 192.168.100.1(我服务器的IP)

可以解析为URI但无法ping通的网址

  • http://myserver.mydomain.com
  • http://192.168.100.1

我也尝试在开头添加\\,但没有运气。

在网络上连接到我们的域时,我们确实有一些奇怪的设置,我认为这是导致http://myserver.mydomain.com ping失败的原因。如何将基本网址(不包含http://)转换为对c#Uri有效的字符串?

代码:

var serverUrl = "myserver.mydomain.com"; //base string I'd like to use
_exchange.Url = new Uri(serverUrl); //causes UriFormatException:  Invalid URI: The format of the URI could not be determined.

1 个答案:

答案 0 :(得分:1)

要使用UriBuilder

从主机名构建Uri
var builder = new UriBuilder();
builder.Host = "myserver.mydomain.com"; 
var uri = builder.Uri;

请注意,您所谓的“uri”(myserver.mydomain.com)实际上是“主机名”或“DNS名称”,这是解析为IP而非用于Ping的内容。 “http://myserver.mydomain.com”是特定协议(HTTP)的绝对Uri。