ASP.NET MVC部署问题

时间:2009-08-19 08:13:39

标签: asp.net-mvc security deployment

我已将我的应用程序部署到运行IIS6的服务器上,使用的方法是将路由更改为:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }

在IIS中为.mvc扩展添加处理程序。这在大多数情况下工作正常,直到我将[Authorize]属性添加到HomeController类。

这最终会在应用程序中尝试将用户重定向到登录页面,这是我所期望的,但登录页面URL显示为http://server/virtualdir/Account/LogOn?ReturnUrl=%2fvirtualdir%2fDefault.aspx

这导致了一个问题,因为没有.mvc扩展名被添加到URL的帐户控制器部分。

2 个答案:

答案 0 :(得分:1)

通过更改web.config中的以下内容解决了该问题:

<authentication mode="Forms">
  <forms loginUrl="~/Account.mvc/LogOn" timeout="2880" />
</authentication>

答案 1 :(得分:0)

不直接回答您的问题,但根据我的经验,使用新的路由功能部署应用程序就像使用IIS6并添加通配符映射到aspnet_isapi.dll一样。然后,您可以使用您想要的任何URL,并且在您将来更改为较新版本时,没有人会注意到。

是的,从理论上讲,静态文件处理在这方面效率较低,但是你需要真正的大量流量来注意任何事情。如果你真的获得了大量流量,你仍然可以甚至将所有静态文件移动到另一个域/子域(甚至是CDN),如stackoverflow.com does。它仍然可以指向同一台服务器,您只需为此子域站点使用不同的IIS设置。但是用e。 G。每天只有几千名访客,你甚至不必考虑它。