我们有一个Web服务器,它在同一个站点中运行了许多单独的应用程序,没有任何问题。我刚刚在root上添加了一个新的应用程序。其中许多应用程序在global.asax中使用路由表,我添加到root用户的路由表也是如此。我收到一个错误,结果是在web.config中,在< modules>中和<处理程序>部分,我的新根应用程序添加了一个与“子”应用程序中的名称相同的处理程序。但是所有这些应用程序对模块和处理程序使用相同的名称:它也支持路由表,它们都被称为“UrlRoutingModule”和“UrlRoutingHandler”。
也就是说,我们现有的应用foo和bar运行为http://example.com/foo和http://example.com/bar。 foo和bar都添加了一个名为“UrlRoutingHandler”的处理程序。这似乎不会导致任何问题。现在我添加一个新的应用程序base,它只是http://example.com运行。 (没有子路径。)它还添加了一个UrlRoutingHandler。一旦我添加这个应用程序,foo和bar就不再可访问了。任何到达它们的尝试都会产生错误500.
有人能给我一些关于发生了什么的线索吗?路由中的应用程序的web.config是否“添加到”“子”应用程序的web.config,但“对等”应用程序中的web.configs不会相互影响?
我在基础应用程序中重命名了处理程序,它看起来像是有效的。但“它有效,我不知道为什么”只比“它不起作用,我不知道为什么”要好一点。
答案 0 :(得分:1)
Web.config始终包含父级别的任何内容。您可以覆盖或删除,但它始终是从machine.config到最嵌套的web.config的所有内容的总和。