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

How is Request.Url.IsDefaultPort determined?

我希望这是一个简单的问题,但我似乎无法全神贯注。很明白这行代码是怎么确定的:

Request.Url.IsDefaultPort

通常情况下是这样的:

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

我的问题涉及的内容比较多:

  1. 如果我的 url 是:http://www.mysitename.com 并且 IIS 为此使用端口 80,这是否成立
  2. 如果我的 url 是:http://www.mysitename.com:12345 并且 IIS 为此使用端口 12345,这是否成立
  3. 这等同于说:Request.Url.Port == 80 吗? "" : ":" + Request.Url.Port?

我确实检查了 Microsoft 的 MSDN article,它往往不太有用。这是关于如何确定 属性 的引用: "A Boolean value that is true if the value in the Port property is the default port for this scheme; otherwise, false." 不幸的是,我不知道 'scheme'.

这个词是什么意思

预先感谢您的帮助。

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

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

  1. 是的,对于 http://www.mysitename.com,在端口 80
  2. 上也是如此
  3. 不,端口 12345
  4. 上的 http://www.mysitename.com:12345 为 false
  5. 不完全是,您的示例是正确的,如果您使用 http 方案检查 URI:Request.Url.Port == 80 // this is false for HTTPS, as an example.

您可以使用 Uri.Scheme 属性 检查 sheme(Request.UrlUri 的一个实例)。