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 位
VS2015 IIS Express 无法启动 解决办法(转)
在vs.net 2010,2015 等版本,给JS函数添加代码提示注释