IIS 和具有相同项目 URL 的多个项目?

IIS And Multiple Projects with the same Project URL?

如果我打开 IIS 并展开站点 -> 默认网站,我有 3 个项目已转换为应用程序:

MyApp_Branch_01

MyApp_Branch_02

MyApp_Branch_03

所有这 3 个应用程序都使用相同的 AppPool。它们的物理路径对应于我物理驱动器上的 3 个唯一目录; C:\inetpub\wwwroot\MyApp_Branch_01, ...02, ...03.

正如您可能猜到的那样,每个目录都包含我们在 SVN 中的应用程序的一个单独的 b运行ch。 01 用于构建,02 用于错误修复和正在进行的工作,03 用于更多 "experimental" 长期项目。这些 b运行ches 中的每一个都使用不同的数据库连接。但是,对于所有这 3 个,如果我右键单击构建项目并转到属性,在 Web 选项卡下所有 3 个项目都具有相同的 Project URL 设置值:它们都指向 http://localhost/MyApp

我刚刚构建了 MyApp_Branch_03 项目并 运行 它。一个同事过来问了一些问题,所以我不得不打开MyApp_Branch_01.sln。我没有构建它,我没有 运行 它;我刚刚在 Visual Studio 中打开它。同时,我在浏览器中留下了 MyApp_Branch_03 debugging / 运行ning。

在帮助我的同事之后,我回到了我正在做的事情......但是现在每当我在控制器中设置断点时,它都会从 MyApp_Branch_01 而不是 [=19= 打开文件] 我在其中设置断点的文件。

我不明白为什么/怎么会这样?当您有多个使用相同的解决方案文件时,IIS 如何确定为哪一组 DLL 提供服务 url?

这与 IIS 决定为哪一组 DLL 提供服务无关。打开解决方案时,如果 csproj 文件中的 IISUrl 元素与本地 IIS 中的任何网站匹配,Visual Studio 会自动更改网站的物理路径。