0

我在“localhost/mvcapplication1”下的 IIS 5.1 环境中有应用程序

路由配置类似于:

    routes.MapRoute("mvc-default", "{controller}.mvc/{action}/{id}"
        , new { controller = "Home", action = "Index", id = (string)null });


    routes.MapRoute("Root", ""
        , new { controller = "Home", action = "Index", id = (string)null });

当页面通过“根”路由时,视图上的链接将指向

http://localhost/mvcapplication1/MvcApplication1/Product.mvc

,这显然是不存在的。但是,当使用第一个“mvc-default”时,它运行良好。

如果应用程序托管在http://......./下也可以正常工作。

关于如何解决它的任何提示?

谢谢。

4

3 回答 3

2

您遇到 404 错误,因为您设置了路由规则“{controller}.mvc/{action}/{id}”,这显然在控制器名称后添加了 .mvc 扩展名,而“”路由规则不会优先考虑,甚至可以工作,因为您使用的是未配置的 IIS。

要在不配置 IIS 的情况下修复它,您可以将 .mvc 更改为 ASP.Net 当前处理的内容,例如 .aspx、.asmx 或其他内容。
如果您想要修复 IIS,请访问下面的链接,按照说明操作,然后删除 .mvc 扩展名。

ASP.Net
Phil Haack 的博客
如果您只是 Google 一下,您可以找到更多关于它的帖子。

于 2009-02-01T13:06:49.337 回答
0

也许这有效:
更改:

HttpContext.Current.RewritePath(Request.ApplicationPath);

HttpContext.Current.RewritePath(Request.ApplicationPath, false);

在 default.aspx.cs(或 default.aspx.vb)中

于 2009-02-04T10:42:09.707 回答
0

晚了一年,但也许这会帮助别人。我有同样的问题,因为我们使用 IIS6,我通过将这两个条目作为我的路由配置中列出的最后两个条目来让它工作:

            routes.MapRoute(null, "{controller}.aspx/{action}");
        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.aspx/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

将“.aspx”更改为您的“.mvc”或您需要的任何内容。

于 2010-08-30T12:53:20.313 回答