1

我的 mvc 应用程序中有两个视图。它们都存储在区域 A 和文件夹 home 中。

我最近正在更改我的项目的属性,它要求在 iis 中重新配置我的站点配置,我总是点击是。从那以后,我收到一个 500.19 错误,说我的配置文件中的数据不正确。

在这一点上,我彻底糊涂了。我将我的 web.configs 与其他应用程序 web.configs 进行了比较,确实没有区别。所以,然后我改变了我的路由,以便输入这个。:

http://stackoverflow/myarea/home

其实回归我的看法。:

http://stackoverflow/myarea/home/index

所以,当我刚刚输入。:

http://stackoverflow/myarea/home/index => 这个错误与 500.19

但是当我使用时。:

http://stackoverflow/myarea/home=> 这可以正常工作,但会产生与上述相同的视图

我已经尝试了很多事情,在 iis 中炸毁我的应用程序并重新创建它,无数次 iis 重置,删除我的视图并重新创建它。什么都没有接近工作。

现在真正奇怪的是我在同一个文件夹中有另一个视图。:

http://stackoverflow/myarea/home/myotherview

当我直接转到上面的这个 url 时,它完全没有问题,没有 500.19。

所以,就好像有什么东西把我对这个问题的看法捆绑在一起。我知道这很奇怪,但我不知道接下来要尝试什么。希望有人以前见过这样的事情。我知道 500.19 通常是 web.config 中的一个问题,但是在其他页面工作之后,我认为这是我不知道的某种设置。

4

1 回答 1

0

500.19 是配置问题。

请参阅此处http://blogs.msdn.com/b/webtopics/archive/2010/03/08/troubleshooting-http-500-19-errors-in-iis-7.aspx

我怀疑您在 global.asax 或区域注册 asax 文件中没有正确设置路由。如果没有看到您的路线,我无法更具体地帮助您。但是您可能需要在

public static void RegisterRoutes(RouteCollection routes)
    routes.MapRoute(
        "DefaultIndexRoute",
        "{controller}/{action}/{id}",
        new {controller = "Home", action="Index", id=UrlParameter.Optional}
    );
}

在 AreaRegistrations.asax 文件中,它将是

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "DefaulAreatIndexRoute",
        "MyArea/{controller}/{action}/{id}",
        new {controller = "Home", action="Index", id=UrlParameter.Optional},
        new [] {"My.Area.Namespace.Controllers"} // optional namespace in case there is a conflict
    );
}

这是一条包罗万象的路线。MVC 将根据第一个匹配的路线选择您的路线。因此,您最有可能希望它位于列表的底部。上面指定了更具体的路线。

基本上,如果 mvc 找不到足够的路由,它将把它扔回 IIS 以找出最有可能出现错误的地方。

请发布您的路线配置,以便我们为您提供更多帮助。谢谢。

于 2013-07-26T12:06:46.293 回答