C# 是什么限制了.NET Core 2.2中HTTPS的端口范围?
在launchSettings.json中,我有以下内容。它的作品,我可以访问斯威格和页面的其余部分使用 当我将“sslPort”:44300更改为例如“sslPort”:44299时,我仍然可以通过相应地更改URL来访问这些内容 但是,当我将该值设置为5100时,我注意到内容不再可访问。事实上,工作范围似乎相当有限,仅集中在44300左右 那是怎么回事 我已经关掉了防火墙,以防万一。在配置中,我尝试添加如下URL。行为没有改变C# 是什么限制了.NET Core 2.2中HTTPS的端口范围?,c#,asp.net-core,https,iis-express,asp.net-core-2.2,C#,Asp.net Core,Https,Iis Express,Asp.net Core 2.2,在launchSettings.json中,我有以下内容。它的作品,我可以访问斯威格和页面的其余部分使用 当我将“sslPort”:44300更改为例如“sslPort”:44299时,我仍然可以通过相应地更改URL来访问这些内容 但是,当我将该值设置为5100时,我注意到内容不再可访问。事实上,工作范围似乎相当有限,仅集中在44300左右 那是怎么回事 我已经关掉了防火墙,以防万一。在配置中,我尝试添加如下URL。行为没有改变 WebHost.CreateDefaultBuilder(args
WebHost.CreateDefaultBuilder(args)
//.UseUrls("https://localhost/5100")
.UseStartup<Startup>();
注意到文档本身建议将5001作为替代端口号,我开始怀疑问题可能完全存在于其他地方。我在另一台机器上重新创建了设置,并且能够重现错误。尽管如此,这两台电脑都是由我配置的,所以如果有人不是我的话,能够确认这一行为就太好了
WebHost.CreateDefaultBuilder(args)
//.UseUrls("https://localhost/5100")
.UseStartup<Startup>();
我得到了一个使用Nmap检查端口应答的提示,很明显,端口5100上有应答。这一点可以通过使用来确认。但是,招摇过市和使用邮递员的呼叫仍然失败…您的工具栏中将运行一个IIS Express图标。通过IIS Express在端口44300下停止站点,然后重新启动站点,它现在应该通过新端口运行。如果这不起作用,只需退出IIS Express并重新启动站点 各州(我的重点): 如果要测试对站点的SSL访问,可以通过使用介于44300和44399之间的SSL端口并使用IIS Express自签名证书,在IIS Express中执行此操作在IIS Express下启动网站时,尝试将SSL与此范围之外的端口一起使用会导致URL绑定失败 链接的docs.microsoft.com页面中有一些说明,介绍了如何配置您的计算机以允许此操作。简短的版本是:
添加>
按钮Next>
,然后选择Finish
Ok
关闭“添加或删除管理单元”窗口netsh-http-add-sslcert-ipport=0.0.0.0:5100 certhash=**Insert\u Thumbprint\u From\u Step\u 9\u over\u Here**appid={00112233-4455-6677-8899-AABBCCDDEEFF}
IIS Express现在应该绑定到5100(您可以将上面步骤2中命令中的端口更改为您选择的端口之一),让Visual Studio弹出一个浏览器窗口来加载您的站点。我回家后会尝试。然而,我很好奇,如果你有任何想法,为什么港口价值的变化在没有你的建议的情况下生效,只要它在以前的价值附近。这种奇怪通常意味着有其他东西控制着这个过程……不,就像我怀疑的那样。我可以在工具栏上的IIS Express中看到的端口会根据launchSettings.json(它忽略了.UseUrls(…)而变化)。但是,当端口设置为太低的值(例如5100)时,我无法访问例如Swagger。这真的很奇怪。通过在launchSettings.json中更改端口,然后仍然能够在原始端口上访问swagger,我可以重现您的体验。直到我存在IIS Express并重新启动应用程序,我才无法在原始端口上访问swagger,需要在新端口上访问。你能试着在chrome中隐姓埋名以排除缓存吗?好主意。现在对它进行了测试,它在端口交换方面的表现与预期一致(您需要重新启动应用程序,因为launchsettings.json仅在启动期间读取)。但是,您能否确认,如果将安全端口更改为5100(即远低于443xx范围),应用程序将启动,但无法正常提供服务?当我注释掉app.UseHttpsRedirection()时,它似乎能在HTTP上正常工作;。。。所以这可能是HTTPS的一个问题,但更多的问题超出了我的能力范围。或者简单地使用像Jexus Manager这样的开源工具来简化步骤。我一直没有意识到这一点。在我的人际网络中四处打听(其中一些人有10年以上的工作经验,有时甚至更多),什么都没有给。事实上,谷歌在这方面的点击率几乎是不可能的。你是怎么发现的?@Donkeybana,模糊地回忆起以前曾碰到过这个问题,然后幸运地找到了正确的搜索词,找到了证明它的文档:)扩展了可信的领域,我的搜索引擎是Bing——对我来说,它似乎比谷歌更擅长查找MSFT相关的结果,虽然这是一件相对较新的事情:)@LexLi,接受更多的请求,获得更多的贡献者来提高您的工具的声誉。1 contributor对连续性的要求不高
services.AddHttpsRedirection(_ =>
{
_.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
_.HttpsPort = 5100;
});