什么限制了.NET Core 2.2中HTTPS的端口范围?

Don*_*ana 6 c# https iis-express asp.net-core asp.net-core-2.2

launchSettings.json中,我有以下内容.它工作正常,我可以使用https:// localhost:44300访问Swagger和页面的其余部分.

{ ...
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:52088",
      "sslPort": 44300
    }
  }, ...
}
Run Code Online (Sandbox Code Playgroud)

当我将"sslPort":44300更改为例如"sslPort":44299时,我仍然可以通过相应地更改URL来访问这些内容.

但是,当我将值设置为5100时,我注意到内容不再可访问.事实上,似乎工作范围相当有限,只集中在44300左右.

那是什么意思?!

为了以防万一,我关掉了防火墙.在配置中我尝试添加这样的网址.行为没有变化.

WebHost.CreateDefaultBuilder(args)
  //.UseUrls("https://localhost/5100")
  .UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)

如何强制应用程序在我选择的端口上正常运行?

.NET Core 2.2的文档之后,我添加了重定向的配置,如下所示.如此担心,它对这个问题没有影响.

services.AddHttpsRedirection(_ =>
{
  _.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
  _.HttpsPort = 5100;
});
Run Code Online (Sandbox Code Playgroud)

注意到文档本身建议将5001作为替代端口号,我开始怀疑问题可能完全位于其他地方.我在不同的机器上重新创建了设置,并能够重现错误.不过,两者都是由我配置的计算机,所以如果有人不能确认这种行为,那就太好了.

我有一个提示要使用的Nmap检查端口的答案,显然有什么东西接听端口5100同样可以使用证实TELNET.然而,Swagger以及使用PostMan的电话仍然失败......

Rob*_*Rob 5

IIS Express文档指出(我的重点):

如果要测试对站点的SSL访问,则可以使用IIS Express,方法是使用44300和44399之间的SSL端口并使用IIS Express自签名证书。当在IIS Express下启动网站时,尝试将SSL与超出此范围的端口一起使用会导致URL绑定失败

在链接的docs.microsoft.com页面上有说明,其中包括如何配置计算机以允许此操作。简短的版本是:

  1. WIN-R> mmc.exe
  2. 文件菜单>添加/删除管理单元...
  3. 在左侧选择证书,然后单击Add >按钮
  4. 选择“ 计算机帐户”Next >然后Finish
  5. 单击Ok以关闭“ 添加或删除管理单元”窗口
  6. 在左侧的树视图中,展开“证书(本地计算机)>个人>证书”
  7. 查找颁发给localhost且使用IIS Express开发证书的友好名称的证书 >双击将其打开
  8. 移至“ 详细信息”选项卡,并一直向下滚动以找到指纹
  9. 复制并粘贴值(在列表视图中单击它,该值将被放入窗口底部的文本字段中)

现在,您已经捕获了证书的指纹:

  1. 以管理员身份打开命令提示符
  2. 运行命令 netsh http add sslcert ipport=0.0.0.0:5100 certhash=**Insert_Thumbprint_From_Step_9_Above_Here** appid={00112233-4455-6677-8899-AABBCCDDEEFF}
  3. 重新启动IIS Express /您的调试会话

IIS Express现在应该绑定到5100(您可以在上面的步骤2中将命令中的端口更改为您选择的端口),从而使Visual Studio弹出一个加载您的网站的浏览器窗口。