我有一个 Visual Studio Web 应用程序项目,由于某些原因,该项目将文件从多个项目复制到单独的输出目录。我想使用此输出目录作为关联 IIS Express 站点的根目录。在 IIS Express 的 applicationhost.config 文件中,我可以将关联站点的物理路径设置为正确的目录。我会这样设置:
<site name="MySiteName" id="42">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="c:\my\desired\path" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:63470:localhost" />
</bindings>
</site>
但是,当我重新打开项目时,Visual Studio 会覆盖我指定的物理路径,将其恢复到项目自己的目录。更糟糕的是,Visual Studio 没有给我任何迹象表明它已经做到了这一点。 <virtualDirectory>
的方法如下:元素在 Visual Studio 弄乱后看起来:
<virtualDirectory path="/" physicalPath="c:\path\to\project" />
如何防止 Visual Studio 覆盖此路径?
最佳答案
Visual Studio 2013 和 2015 不会更改选项“覆盖应用程序池 URL”的物理路径:
文件 %userprofile%\documents\iisexpress\config\applicationhost.config
默认情况下如下所示:
<site name="MyWebSite" id="1477659296">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\MyWebSite" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:62238:localhost" />
<binding protocol="http" bindingInformation="*:62238:*" />
</bindings>
</site>
只需复制上面的默认 block ,直接粘贴到下面并进行一些更改即可。更改 name
、id
、physicalPath
并使用附加子域覆盖 URL。就我而言调试
:
<site name="MyWebSiteOverwritten" id="99999999">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\DifferentPath" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:62238:debug.localhost" />
</bindings>
</site>
现在,当我启动 VS 并运行 IIS Express 时,Visual studio 不会更改覆盖 URL 的 applicationhost.config 中的物理路径。这对我有用。
Visual Studio 2015 提示:Visual Studio 2015 使用文件 YourProject/.vs/config/applicationhost.config
并在您每次打开环境时覆盖它。打开您的 *.proj
文件并设置以下条目:
<UseGlobalApplicationHostFile>true</UseGlobalApplicationHostFile>
通过此配置,IIS Express 使用位于以下位置的全局应用程序主机文件:%userprofile%\documents\iisexpress\config\applicationhost.config
。
关于visual-studio - 如何防止 Visual Studio 修改 applicationhost.config 中的 IIS Express 站点物理路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21467083/