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

时间:2018-12-05 19:23:30

标签: c# asp.net-core https iis-express asp.net-core-2.2

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

{ ...
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:52088",
      "sslPort": 44300
    }
  }, ...
}

当我将“ sslPort”:44300 更改为例如“ sslPort”:44299 ,我仍然可以通过相应地更改URL来访问内容。

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

那是什么?!

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

WebHost.CreateDefaultBuilder(args)
  //.UseUrls("https://localhost/5100")
  .UseStartup<Startup>();

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

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

services.AddHttpsRedirection(_ =>
{
  _.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
  _.HttpsPort = 5100;
});

注意到文档本身建议使用5001作为备用端口号,我开始怀疑该问题可能完全位于其他地方。我在另一台计算机上重新创建了安装程序,并能够重现该错误。仍然都是我配置的计算机,因此,如果不是我的人可以确认此行为,那就太好了。

我有一个技巧可以使用Nmap检查端口答案,并且显然在端口5100上有应答。可以使用TelNet来确认。但是,Swagger以及使用PostMan的呼叫仍然失败...

2 个答案:

答案 0 :(得分:5)

documentation for IIS Express的状态(我的重点):

  

如果要测试对站点的SSL访问,可以使用IIS Express,方法是使用44300和44399之间的SSL端口并使用IIS Express自签名证书。 尝试在超出此范围的端口上使用SSL会导致在IIS Express下启动网站时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弹出一个加载您的网站的浏览器窗口。

答案 1 :(得分:-1)

工具栏中将运行IIS Express图标。通过IIS Express在端口44300下停止该站点,然后再次重新启动该站点,它现在应该通过新端口运行。如果那不起作用,请退出IIS Express并重新启动站点。

enter image description here