如何让 Visual Studio 自动将调试器附加到网站而不是应用程序?

How can I get Visual Studio to automatically attach debugger to web Site not Application?

我有一个 Web 应用程序需要 运行 作为网站(根应用程序)。这是因为它是一个多租户应用程序,它使用 urls 子域前缀来了解哪个客户端正在访问它。我在 IIS 10 中创建网站,将物理路径设置为我的 Visual Studio 2017 .NET 4.5 MVC 应用程序,网站运行正常。

我打开 Web 项目属性并在服务器下选择本地 IIS 设置并将项目 Url 设置为我刚刚在 IIS 中创建的站点。 Visual Studio 然后强制我为项目 Url 创建一个虚拟目录以保存它,然后在默认网站下创建一个 Web 应用程序。如果不强制创建虚拟目录,则无法设置和保存项目 Url。

现在,当我开始调试时,Visual Studio 附加到 Web 应用程序而不是我的网站,因此我的断点永远不会被命中。如果我手动附加到网站 运行ning 的 w3wp 进程,我可以调试。在最近切换到 Git 之前,我一切正常,导致我重新配置,我不记得我做了什么让它工作。

如何在不强制创建虚拟目录的情况下在 Web 属性页面上设置项目 Url?或者如何使 VS 自动附加到网站而不是我被迫创建的 Web 应用程序?

此博客可能有帮助:How to Debug Your ASP.NET Projects Running Under IIS

如果您的项目是网站而不是网络应用程序,那么以下是将其配置为在调试时使用 IIS 的步骤。这假定您已经设置了 IIS 并托管了您的项目。

  1. 在解决方案资源管理器中。
  2. 右键单击您的项目节点并导航到“属性 页面”。
  3. 导航到左窗格中的“启动选项”项。
  4. 在“服务器”部分,确保选中“使用自定义服务器”。
  5. 在 "Base URL:" 字段中输入您映射到项目的地址。 (通常是您在主机文件中输入的地址)

我终于发现,将 Web 项目属性页中的服务器 'Project Url' 设置为“http://localhost/”并不会强制您使用 'Create Virtual Directory' 来保存更改。如果不强制创建虚拟目录,您甚至无法在此处更改默认端口。