如何使用 localhost 以外的 URL 调试 ASP.NET Core Web 应用程序

Gra*_*ple 1 asp.net-core-mvc asp.net-core visual-studio-2017 visual-studio-2019

我有一个 Web 应用程序,其行为因主机名而异。为了在本地 PC 上测试它,我需要安排 IISExpress 使用我在“项目”->“属性”->“调试”中提供的特定名称来运行 Web 应用程序,例如http://mywebsite:58981/

在此输入图像描述

但是当开始调试时,会弹出一条消息“无法连接到Web服务器'IIS Express'”。Windows 10 活动中心向我发出一条消息提醒,单击该消息后,我收到了来自 IIS Express 的弹出窗口:

在此输入图像描述

我尝试了其他用户的建议,例如删除包含 applicationhost.config 的 .vs 文件夹并重新启动解决方案,但它仍然不起作用。我什至确保 IIS Express 没有运行其他任何东西:

在此输入图像描述

但是,如果我将应用程序 URL 更改回http://localhost:58981/,删除.vs文件夹,然后打开解决方案,我可以像往常一样进行调试。

所以我的问题是:如何将 URL 从localhost更改为其他内容?我正在运行 Visual Studio 2019,我的 Windows 10 是 1903 版本。

Nan*_* Yu 5

第一个建议是以管理员身份运行 Visual Studio。

修改IIS Express配置文件,进入编辑文件:

\{project folder}\.vs\{yourWebApplicationName}\config\applicationhost.config

你会发现类似这样的东西(用你的应用程序名称查找):

<site name="WebApplication3" id="2">
    <application path="/" applicationPool="WebApplication3 AppPool">
      <virtualDirectory path="/" physicalPath="C:\Users\Administrator\source\repos\WebApplication3\WebApplication3" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation="*:53717:localhost" />
      <binding protocol="https" bindingInformation="*:44325:localhost" />

    </bindings>
</site>
Run Code Online (Sandbox Code Playgroud)

添加<bindings>,在另一行添加你自己的IP,端口号:

<binding protocol="http" bindingInformation="*:53717:mywebsite" />
Run Code Online (Sandbox Code Playgroud)

C:\Windows\System32\drivers\etc编辑hosts文件(复制到另一个地方,编辑并复制回来):

# localhost name resolution is handled within DNS itself.
    127.0.0.1       mywebsite
#   ::1             localhost
Run Code Online (Sandbox Code Playgroud)

然后你可以用来http://mywebsite:53707调试你的应用程序,你可以注释掉app.UseHttpsRedirection();Configure处理HTTP请求。