我已经配置了一个azure网站(MVC),一切正常,直到我尝试将WebAPI项目添加到部署到azure的解决方案中。
我的虚拟目录映射看起来像
- 虚拟-----物理--- IsApplication
- / ----- site \ wwwroot \ ------ IsApplicaiton(yes)[mvc的路径 项目]申请
- / api ---- site \ services \ ------- IsApplication(no)
- / api / code ------ site \ services \ code \ ------- IsApplication(yes)[WebAPI项目的路径]
醇>
MVC应用程序运行正常,但WebAPI应用程序(VS WebApplication的空白支架 - > WebAPI2)却没有。在修改WebApi的web.config
以禁用自定义错误页面后,我发现问题是MVC应用程序web.config
中包含的命名空间(当然,WebAPI项目没有引用它,它不应该)。但是,为什么WebAPI在拥有自己的MVC应用程序时甚至会因为web.config
而烦恼呢?
答案 0 :(得分:1)
Web.config设置"瀑布"在应用程序中。因此,如果您在根目录中托管了应用程序' /'然后在其下托管另一个应用程序(即' / api / code')然后根网络应用程序的web.config中的所有设置都将添加到子应用程序的设置中#39 ; s web.config。应用程序的物理位置与此行为无关。所有这些都是由虚拟目录结构驱动的。这就是您在WebAPI应用程序中看到与MVC应用程序命名空间相关的错误的原因。
要解决此问题,您应该在WebAPI的web.config中使用<remove name="..." />
或<clear />
标记或inheritInChildApplications
属性来删除从MVC应用程序传递的设置。有关如何执行此操作的示例,请参阅此答案:https://stackoverflow.com/a/5968658/6387007
有关web.config继承的更多信息,您也可以查看此MSDN文章:https://msdn.microsoft.com/en-us/library/ms178685.aspx