【问题标题】:How to run HTTPS with IIS Express in port number 53135如何在端口号 53135 中使用 IIS Express 运行 HTTPS
【发布时间】:2023-03-03 12:43:01
【问题描述】:

我正在使用 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 的端口:hanselman.com/blog/…
  • 感谢您的回复。我无法理解该博客中提到的内容,因为我对所有这些概念都很陌生。那么您能否具体说明解决方法是在哪一部分提到的?
  • 这是针对 IISExpress 的限制。如果您想要更多控制,请使用 IIS,在其中放置自签名(甚至是 Visual Studio)证书,指定您想要的任何端口。直接构建/发布到 IIS。

标签: c# https


【解决方案1】:

对我来说,它通过将端口更改为 44300 来工作。

根据这个postIISExpress 端口https 应该类似于4443xx

【讨论】:

    【解决方案2】:

    您需要管理员权限。

    使用管理员权限打开命令提示符,然后执行:

    netsh http show sslcert
    

    搜索 IP:Port 在 44300 到 44399 范围内的块,并复制证书哈希值和应用程序 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
    • 是的,我在端口 60544 上运行 IISExpress。IISExpress 限制为 44300-44399,因为它在安装过程中预先注册了这些端口,因此如果您使用这些端口,则不需要管理员访问权限。对于该范围之外的任何内容,您都需要管理员权限才能使用 netsh 添加 certssl。 docs.microsoft.com/en-us/iis/extensions/using-iis-express/… "它会在本地机器存储中自动创建并安装自签名 SSL 服务器证书。"
    • 我需要这样做,因为我需要将浏览器重定向到的第 3 方只允许某些端口用于重定向......
    • 经过数小时的压力,这解决了我的问题。似乎VS2017对此进行了不同的配置;仅安装了 2019 的机器无法使用我可以在另一台机器上使用的端口(出于 [原因],我必须使用此端口)。如上所述添加端口解决了我的问题! @pca1987 我欠你一杯啤酒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多