使用错误的web.config在azure中部署的应用程序

时间:2016-10-07 16:24:03

标签: c# asp.net-mvc azure asp.net-web-api web-config

我已经配置了一个azure网站(MVC),一切正常,直到我尝试将WebAPI项目添加到部署到azure的解决方案中。

  

我的虚拟目录映射看起来像

     
      
  1. 虚拟-----物理--- IsApplication
  2.   
  3. / ----- site \ wwwroot \ ------ IsApplicaiton(yes)[mvc的路径   项目]申请
  4.   
  5. / api ---- site \ services \ ------- IsApplication(no)
  6.   
  7. / api / code ------ site \ services \ code \ ------- IsApplication(yes)[WebAPI项目的路径]
  8.   

MVC应用程序运行正常,但WebAPI应用程序(VS WebApplication的空白支架 - > WebAPI2)却没有。在修改WebApi的web.config以禁用自定义错误页面后,我发现问题是MVC应用程序web.config中包含的命名空间(当然,WebAPI项目没有引用它,它不应该)。但是,为什么WebAPI在拥有自己的MVC应用程序时甚至会因为web.config而烦恼呢?

1 个答案:

答案 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