如何配置 IIS Express 以调试子目录中的应用程序?
Posted
技术标签:
【中文标题】如何配置 IIS Express 以调试子目录中的应用程序?【英文标题】:How to configure IIS Express to debug an application in a subdirectory? 【发布时间】:2013-11-18 01:25:27 【问题描述】:我的 Web 应用程序通常位于 IIS 根目录的子目录中。假设子目录是“app”
当我尝试在 Visual Studio 中调试它时,路径始终以 localhost 为根,没有子目录。这弄乱了我在应用程序中的路径。
当我尝试将项目 URL 的形式从 http://localhost:port/
更改为 http://localhost:port/app
时,它只会显示“无法创建虚拟目录”。嗯,第一次就是这么说的,直到我从application.config文件中删除了应用入口,然后就成功了。
当我尝试“覆盖应用程序根 URL”时,它只是不起作用。它要么收到 Error 500.0 Internal Server 错误,要么在某些情况下就像将应用程序的 web.config 文件应用到根目录和虚拟子目录一样,因为它给出了一个错误,我正在尝试添加一个具有已经被添加(大概在根目录中)。
我尝试在 IIS Express 的 application.config 中编辑项目设置,但似乎没有任何设置组合起作用。
我不明白为什么 Visual Studio 将项目置于 IIS Express 根目录中,因为它知道该项目已部署到 IIS 的子目录中。我认为它应该默认匹配目录结构。
这就是现在的样子:
<site name="app" id="5">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/app" physicalPath="C:\Users\username\Desktop\wwwroot\app" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:3056:localhost" />
</bindings>
</site>
如果我将应用程序路径更改为“/app”,则会出现错误 500.19,表示配置无效。如果我做同样的事情并删除虚拟目录标签,那么它就无法完全启动 IIS Express。
【问题讨论】:
【参考方案1】:我在这里找到了答案:https://***.com/a/4733387/88409 不同的问题,但相同的答案。
基本上,必须创建一个子应用程序,而不仅仅是一个子虚拟目录。
<site name="app" id="5">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\username\Desktop\wwwroot" />
</application>
<application path="/app" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\username\Desktop\wwwroot\app" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:3056:localhost" />
</bindings>
</site>
它似乎需要两个应用程序条目(即它需要一个根应用程序(即使它实际上是一个空的虚拟目录)以及子应用程序)。如果我在根目录中省略了第一个应用程序条目,则会收到错误 500.19“无法访问请求的页面,因为该页面的相关配置数据无效。”但是,对于这两个应用程序条目,它都可以正常工作。
据我所知,在 Visual Studio 中无法生成上述设置,因此必须在 application.config 中手动编辑。因此,这些设置与 Web 应用程序项目文件本身完全无关,这不好,IMO。
【讨论】:
以上是关于如何配置 IIS Express 以调试子目录中的应用程序?的主要内容,如果未能解决你的问题,请参考以下文章