MVC视图在使用直接URL时抛出500.19错误,但在通过控制器路由时却没有?

时间:2013-07-24 23:32:51

标签: asp.net-mvc iis-7

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

我最近正在更改项目的属性,并要求在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

当我直接进入上面的这个网址时,它完全没有问题,没有500.19。

所以,好像有什么东西把我的观点与这个问题联系在一起。我知道这是一个奇怪的,但我迷失在下一步尝试。希望有人之前见过这样的事情。我知道500.9通常是web.config中的一个问题,但是在其他页面工作之后我觉得它是某种我不知道的设置。

1 个答案:

答案 0 :(得分: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,以确定你最有可能得到错误。

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