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 检测到在集成的托管管道模式下不适用

HTTP 错误 500.22 - Internal Server Error

C# asp.net mvc 创建虚拟目录