Request.Url.IsDefaultPort是如何确定的?

时间:2015-01-20 14:20:41

标签: c# http iis

我有一个我希望是一个简单的问题,我似乎无法解决这个问题。很明显,这行代码是如何确定的:

Request.Url.IsDefaultPort

通常会出现这样的情况:

Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port

我的问题涉及更多内容:

  1. 如果我的网址是:http://www.mysitename.com并且IIS正在使用端口80,那么这是真的
  2. 如果我的网址是:http://www.mysitename.com:12345并且IIS正在使用端口12345,那么这是真的吗
  3. 这与说法相同:Request.Url.Port == 80? "" :":" + Request.Url.Port?
  4. 我确实检查了微软的MSDN article,因为它往往不太有用。以下是关于如何确定此属性的引用:"布尔值,如果Port属性中的值是此方案的默认端口,则该值为true;否则,错误。"不幸的是,我不知道“' scheme'”这个词是什么意思。

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果端口是方案的默认端口,则为true。例如,HTTP作为方案(http:)使用端口80. HTTPS作为方案(https:)使用端口443。

Uri.IsDefaultPort属性仅检查端口值是否等于方案的默认值,而不是IIS中的绑定。

  1. 是的,http://www.mysitename.com,端口80
  2. 是真的
  3. 不,对于端口12345上的http://www.mysitename.com:12345
  4. ,它将为false
  5. 如果您使用http方案检查URI,那么您的示例是正确的:Request.Url.Port == 80 // this is false for HTTPS, as an example.
  6. 您可以使用Uri.Scheme属性检查sheme(Request.UrlUri的实例)。