IISExpress VS.Net 2015 - HTTP 错误 500.22 - 检测到不适用于集成托管管道模式的 ASP.NET 设置

Posted

技术标签:

【中文标题】IISExpress VS.Net 2015 - HTTP 错误 500.22 - 检测到不适用于集成托管管道模式的 ASP.NET 设置【英文标题】:IISExpress VS.Net 2015 - HTTP Error 500.22 - An ASP.NET setting has been detected that does not apply in Integrated managed pipeline mode 【发布时间】:2016-10-21 11:52:21 【问题描述】:

我的本​​地 Win 10 机器上有一个 ASP.NET MVC5 网络应用程序。最近,我将一些 Nuget 包和 MVC4 升级到 MVC5。并将目标框架版本更新为.Net v4.5。

现在,当我从本地 VS.Net 2015 社区版本调试 Web 应用程序时我收到以下错误 -

HTTP 错误 500.22 - 内部服务器错误 ASP.NET 设置已被 检测到不适用于集成托管管道模式。

我发现的大多数线程都是针对 IIS 我说的是 IISExpress。他们建议将 Web 应用的 App Pool 更改为 IIS 中的 Classic(Post1、Post2、Post3)。但是 VS.Net 使用 IISExpress,所以我也更深入地研究了它并找到了 - C:\Users\\Documents\IISExpress\config\applicationhost.config。尝试编辑它,但它只允许我配置一个 WebSite1,它是 localhost:8080,我的运行为 localhost:1960。

我也尝试过 appcmd 命令行方法,但除非我有一个网站'localhost:1960',否则似乎没有办法。我还寻找了一个 IISExpress UI 工具 Jexus,但我的 'localhost:1960' 网站没有列出。

显然,设置

在 web.config

修复它。但它不是最好的解决方案。而且我无法从我的 web.config 中删除 httpHandlers 或模块。

我需要知道如何操作 VS.Net 2015 在调试时调用的 IISExpress不是 IIS

谢谢。

【问题讨论】:

你不是决定什么是“最好”的人。微软大佬作为设计师,iis.net/learn/application-frameworks/… BTW,Jexus Manager 要求你添加 VS2015 解决方案文件作为新服务器。 【参考方案1】:

最后,我可以为 VS.Net 2015 及其 IISExpress 配置破解它。 IT 无法“从外部”配置它,如果您在 VS.Net 之外继续修改 IIS 或 IISExpress 设置,则不会有任何效果。

我花了一段时间才将注意力集中在 VS.Net 项目属性和配置上。我发现 VS.Net 创建了自己的“applicationhost.config”版本,可以在 -

\.vs\config\applicationhost.config

这是我必须更改应用程序池的文件 (applicationPool="Clr4ClassicAppPool) -

    <sites>
        <site name="WebSite1" ... ignore this sction if present
        </site>
        <site name="myProject" id="2">
            <application path="/" applicationPool="Clr4ClassicAppPool">
                <virtualDirectory path="/" physicalPath="D:\Source\myProject" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:1960:localhost" />
            </bindings>
        </site>

您只需要更改应用程序池(您的经典应用程序池名称可能不同,在这种情况下从同一文件中获取正确的名称)。另外请确保您更新的是正确的“ site" 节点(从 VS.Net 调试时 Web 应用程序的正确 localhost url)

如果仍然存在问题,请设置以下 -

<applicationDefaults applicationPool="Clr4IntegratedAppPool" />

如果仍然存在问题,请在此文件中进行上述更改 -

C:\Users\\Documents\IISExpress\config\applicationhost.config

可能也需要重新启动。希望这会有所帮助。

【讨论】:

您还可以从 APS.NET 项目的属性中在经典模式和集成模式之间切换托管管道模式,在解决方案资源管理器中单击该项目,然后按 F4 打开属性。【参考方案2】:

我将为 IIS express 提供一个简洁明了的答案。以及它在 2018 年的工作。

1) 转到 .sln 文件所在的主解决方案目录。

2) 导航打开:

\.vs\config\applicationhost.config

3) 找到您的项目名称

<site name="Your.Project.ServiceName" id="2">

4) 从 Clr4IntegratedAppPool 更改应用程序池 -> Clr4ClassicAppPool

<application path="/" applicationPool="Clr4ClassicAppPool">

5) 重新启动您的视觉工作室。

6) 享受吧!

【讨论】:

以上是关于IISExpress VS.Net 2015 - HTTP 错误 500.22 - 检测到不适用于集成托管管道模式的 ASP.NET 设置的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 2015 中为调试模式运行 iisexpress 32 位而不是 64 位

调试启动时 IISExpress 崩溃

VS2015 IIS Express 无法启动 解决办法(转)

在vs.net 2010,2015 等版本,给JS函数添加代码提示注释

为啥我的 Visual Studio 开始以这种方式运行? iisexpress 找不到或打开 PDB 文件

Visual Studio 2015 无法启动 IIS Express