c# - Request.Url.IsDefaultPort 是如何确定的?

标签 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?

我确实检查了微软的 MSDN article事实往往如此,这没什么帮助。以下是关于如何确定此属性的引文:“如果 Port 属性中的值是此方案的默认端口,则 bool 值为 true;否则为 false。”不幸的是,我不知道他们所说的“计划”是什么意思。

预先感谢您的帮助。

最佳答案

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

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

  1. 是的,http://www.mysitename.com 也是如此。 ,在端口 80 上
  2. 不,http://www.mysitename.com:12345 将为假在端口 12345 上
  3. 不完全是,您的示例是正确的,如果您使用 http 方案检查 URI: Request.Url.Port == 80//这对于 HTTPS 来说是错误的,因为示例。

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

关于c# - Request.Url.IsDefaultPort 是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28047632/

相关文章:

c# - 修改 ISAPI 和 CGI​​ 扩展

ssl - 浏览 IP 地址时使用 SSL

c# - 如何在数学对象等表达式中使用自定义类?

python - 如何使用 Python Etsy HTTP API 方法添加新项目?

http - Google Apps 脚本中的 Cookie 处理 - 如何在 header 中发送 cookie?

http - 类型 'Http' 的参数不可分配给 Ionic ngx-translate 中类型 'Http' 的参数

sql-server - 不停止更新生产 IIS 网站和 SQL Server 数据库

c# - 为什么这个 List<>.IndexOf 代码比 List[i] 和手动比较快得多?

c# - 编译器错误 : An expression tree may not contain a dynamic operation

c# - 反序列化具有混合值 System.Text.JSON 的 JSON 数组