如何在端口号为53135的IIS Express中运行HTTPS

5

我正在使用ASP.NET Core 2.0.0,并使用它创建了一个可在HTTPS中运行的Web应用程序。为了在HTTPS中运行,我在我的Program.cs文件中使用了以下代码:

string directory = Directory.GetCurrentDirectory();
            string portNumber = Helper.getPortNumber(directory);
            var cert = new X509Certificate2("file1.pfx", "ccc");

            var host = new WebHostBuilder()
                .UseKestrel(cfg => cfg.UseHttps(cert))
                .UseUrls("https://localhost:53135")
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

            host.Run();

然后将APPURL更改为https://localhost:53135/。如果我运行程序,会出现以下错误:

"An error occurred attempting to determine the process id of service.exe which is hosting your application.One or more errors occurred."

但如果我将端口号设置为 44300 至 44399,就不会出现任何异常,并且链接可以成功托管。我在一篇链接中读到,要运行带有 SSL 的 IIS Express,端口号应该在 44300 到 44399 的范围内。我需要在所有端口上运行我的应用程序。请有人指导我如何做到这一点?


这篇博客介绍了一种使用SSL的任意端口的解决方法:https://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx - Oguz Ozgul
谢谢您的回复。由于我是一个新手,所以我无法理解博客中提到的内容。所以请问您能否指出解决方法在哪个部分提到? - Suganya
这是针对IISExpress限制的说明。如果您需要更多的控制,请使用IIS,放置自签名证书(甚至是Visual Studio),指定任何端口。直接构建/发布到IIS。 - Piotr Kula
2个回答

7

你需要管理员权限才能进行此操作。

以管理员身份打开命令提示符,然后执行以下命令:

netsh http show sslcert

在44300到44399的范围内搜索具有IP:Port的块,并复制证书哈希和应用程序ID值。 然后执行:

netsh http add sslcert ipport=0.0.0.0:53135 certhash=<HASH> appid="<APPLICATION_ID>"

用你在第一步中复制的哈希值替换这些值。
接着,编辑你的 .csproj 和可能的 .csproj.user 文件,确保你的 Visual Studio 会使用正确的端口启动应用程序,例如:
<IISExpressSSLPort>53135</IISExpressSSLPort>

有时您可能还需要编辑 .vs\config\applicationhost.config 文件,查找绑定并更改其端口。将其更改为类似以下内容:

<binding protocol="https" bindingInformation="*:53135:localhost" />

请确保编辑绑定以适用于正确的项目。


你真的让它工作了吗?我无法让IISExpress在SSL默认端口范围之外使用SSL。 - Piotr Kula
1
是的,我正在端口60544上运行IISExpress。IISExpress限制在44300-44399之间,因为它在安装期间预注册了这些端口,所以如果您使用这些端口,则不需要管理员访问权限。对于那个范围之外的任何东西,您需要管理员访问权限才能使用netsh添加certssl。https://learn.microsoft.com/en-us/iis/extensions/using-iis-express/running-iis-express-without-administrative-privileges“它会自动创建并安装一个自签名的SSL服务器证书到本地计算机存储区。” - pca1987
我需要这样做是因为我需要重定向浏览器到第三方,而该第三方只允许特定的端口进行重定向返回...... - Dave R
这解决了我几个小时的问题。看起来VS2017配置不同;只安装了2019的机器无法使用我在另一台机器上可以使用的端口(我必须使用此端口出于某些原因)。像上面那样添加端口已经解决了我的问题!@pca1987 我欠你一杯啤酒! - melodiouscode

1

对我来说,将端口更改为44300就可以了。

根据这个postIISExpresshttps端口应该是类似于4443xx的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接