2009-08-19 6 views
1

Я развертывается мое приложение на сервере под управлением IIS6, используя метод, который invloves изменение маршрутов в:ASP.NET MVC развертывания Проблема

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 расширений. Это работает отлично по большей части, пока я не добавлю атрибут [Авторизовать] в класс HomeController.

Это заканчивается в приложение пытается перенаправить пользователя на страницу входа в систему, которая является то, что я ожидаю, однако URL страницы входа отображается как http://server/virtualdir/Account/LogOn?ReturnUrl=%2fvirtualdir%2fDefault.aspx

Это вызывает проблему, так как не .mvc расширение не добавляется для элемента управления учетной записью URL-адреса.

ответ

0

Непосредственно ответ на ваш вопрос, но по моему опыту он отлично работал, чтобы развернуть приложение с новыми функциями маршрутизации так же, как и IIS6, и добавить сопоставление подстановок в aspnet_isapi.dll. Затем вы можете использовать любой URL-адрес, который хотите, и никто не заметит, когда вы перейдете на новую версию в будущем.

Да, статическая обработка файлов теоретически менее эффективна таким образом, но вам действительно нужно много трафика, чтобы заметить что-либо. И если вы действительно получаете много трафика, вы все равно можете и даже должны переместить все ваши статические файлы в другой домен/поддомен (или даже CDN) в любом случае, например stackoverflow.com does. Он все равно может указывать на тот же сервер, вы просто используете разные настройки IIS для этого сайта поддомена. Но с e. г. всего несколько тысяч посетителей в день вам даже не нужно об этом думать.

+0

Спасибо за информацию, я видел упоминание возможностью использования wilcard отображения, я буду смотреть на него в дальнейшем. – 2009-08-19 08:43:54

1

Проблема была решена путем изменения следующих в web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account.mvc/LogOn" timeout="2880" /> 
</authentication> 
Смежные вопросы