Действие ASP.NET MVC и виртуальный каталог с одинаковым путем - PullRequest
0 голосов
/ 30 ноября 2010

Требуется ли какая-либо специальная конфигурация маршрутизации или IIS, когда действие контроллера использует тот же URL-адрес, что и виртуальный каталог?

У меня есть приложение ASP.NET MVC 1.0, для которого требуется аутентификация Windows, примененная к одному действию ("/ Войти / FromWindows ").Для этого мы настроили виртуальный каталог с тем же путем, что и действие (например, "/ Login / FromWindows"), и включили проверку подлинности Windows на нем в IIS.

Когда я захожу в / Login / FromWindowsURL, я получаю пустой ответ HTTP 200 и ничего не регистрируется в текстовом журнале сервера.Действие «FromWindows» должно регистрировать сообщения и перенаправлять пользователя на домашнюю страницу.

Кажется, что код действия просто не выполняется, поэтому возможно конфликт с виртуальным каталогом.

Конфигурация маршрута в Global.asax.cs

public static void RegisterRoutes(RouteCollection routes)
{
    // snipped: ignored routes for images, scripts, etc.

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

Ответы [ 2 ]

1 голос
/ 01 декабря 2010

Вы правы, код действия не выполняется. Это связано с тем, что существующие пути к файлам (виртуальные или нет) имеют приоритет над правилами маршрутизации MVC.

Почему вы используете виртуальный каталог? Просто установите аутентификацию для windows в файле web.config и используйте атрибут [authorize] для соответствующих методов действия.

Web.config:

<configuration>
     <system.web>
          <authentication mode=”Windows” />
     </system.web>
</configuration>

Метод действия:

[Authorize]
public ActionResult SomeAction()
{
     return View();
}

Посетите http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-vb для получения дополнительной информации о mvc с аутентификацией Windows.

0 голосов
/ 01 декабря 2010

Просто используйте [Authorize] атрибут Chevex, упомянутый выше, или, если вы хотите больше, вы можете настроить Authorize, расширив его для своего бизнеса. ПО МОЕМУ МНЕНИЮ.

...