500.22 用于具有子虚拟目录 ASP.NET MVC 应用程序的根 ASP.NET 应用程序上的子目录文件
Posted
技术标签:
【中文标题】500.22 用于具有子虚拟目录 ASP.NET MVC 应用程序的根 ASP.NET 应用程序上的子目录文件【英文标题】:500.22 for subdirectories files on root ASP.NET application with child virtual directory ASP.NET MVC application 【发布时间】:2016-08-03 10:16:08 【问题描述】:我正在尝试整合以下架构:
/(根):ASP.NET WebForms 4.6 应用程序。 /SPA(虚拟目录):ASP.NET MVC 4.6 应用程序。为了清楚起见,这里是 IIS Express 配置:
<site name="Redacted.Axis.Web.UI.SingleApp-Site" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\Axis\Dev\PocInternational\Web\Redacted.Axis.Web.UI.App" />
</application>
<application path="/SPA" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Projects\Axis\Dev\PocInternational\Web\Redacted.Axis.Web.UI.SingleApp" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:4010:localhost" />
</bindings>
</site>
它们位于单独的 Web 项目(UI.App 和 UI.SingleApp)上。我希望他们共享相同的身份验证。我已经设法使用通用机器密钥和相同的身份验证/表单配置使其工作。
我的最后一个问题是,没有提供根应用程序下的静态文件,例如 /CSS/site.css 或 /JS/jquery.js。我都收到了 500.22 错误。
假设这个错误意味着我应该处于经典模式,但 WebForms 应用程序到目前为止在集成模式下运行良好(默认.aspx 或 login.aspx 在 root 工作)。
也可能是system.web中定义的一些模块不在system.webServer中。但他们是。
我在两个 web.config 文件中都有这个:
system.webServer/validation@validateIntegratedModeConfiguration=false
systel.webServer/modules@runAllManagedModulesForAllRequests=true
子 MVC 应用程序的静态文件可以正常工作,例如 /SPA/Content/sites.css。
在我使用 MVC 应用程序添加虚拟目录之前,WebForms 应用程序运行良好。我必须更改的唯一另一件事是在根应用程序的所有 web.config 节点上添加 location@path=.@inheritInChildApplications=false,以便 MVC web.config 正常工作。
肯定有什么小事,但我不能指望它......
【问题讨论】:
【参考方案1】:发帖权。
我开始认为我在根 web.config 中的位置标签与它有关。
我找到了答案here。
对于懒惰的人, validateIntegratedModeConfiguration 必须在位置标签之外。你可以有两个 system.webServer 部分,没关系(但不是两个验证标签)。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<location path="." inheritInChildApplications="false">
<system.webServer>...</system.webServer>
</location>
【讨论】:
节省了我数小时的研究时间。以上是关于500.22 用于具有子虚拟目录 ASP.NET MVC 应用程序的根 ASP.NET 应用程序上的子目录文件的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 HTTP 错误 500.22 - 内部服务器错误检测到 ASP.NET 设置不适用于集成托管管道模式
HTTP 错误 500.22 - 内部服务器错误(已检测到不适用于集成托管管道模式的 ASP.NET 设置。)
HTTP错误500.22 检测到在集成的托管管道模式下不适用的ASP.NET设置
ASP.NET 网站迁移 HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用