我正在尝试整合以下架构:
为清楚起见,这是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应用程序在集成模式下工作正常(在root工作时默认为.aspx或login.aspx)。
它还可能意味着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正常工作。
必须关闭一些东西,但我不能把手指放在上面......
答案 0 :(得分:0)
张贴的力量。
我开始认为root web.config中的位置标记与它有关。
我找到了答案here。
对于lazies,validateIntegratedModeConfiguration必须位于location标记之外。你可以有两个system.webServer部分,它没关系(但不是两个验证标签)。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<location path="." inheritInChildApplications="false">
<system.webServer>...</system.webServer>
</location>