Приложение ASP.NET MVC 3 всегда перенаправляет для входа в систему на живом сайте - PullRequest
3 голосов
/ 05 апреля 2011

На первый взгляд это может показаться похожим на этот вопрос , но в моем случае я реализовал стандартную безопасность на основе AspNetSqlMembershipProvider в своем приложении MVC.

Когда я развертываю свое приложение на localhostили внутренний промежуточный сервер, все работает как положено - большинство действий HomeController и AccountController видны неаутентифицированным пользователям, а все остальные защищены (я использую атрибут [Authorize] для разметки классов и методов, которые необходимо защитить)

Проблема в том, что когда я развернул свое приложение на сервере живого хостинга, практически все запросы перенаправляются на страницу входа без видимой причины.

Я понимаю, что должен упускать из виду некоторые простыено важная часть конфигурации, но так как я новичок во всей этой вещи .NET (не говоря уже о ASP и MVC), я не могу на всю жизнь выяснить, что не так или отсутствует

Если требуется больше информацииПожалуйста, дайте мне знать, и я будубудем рады предоставить.

Редактировать: В Web.config нет элементов <location>.Кроме того, различия в staging и live site Web.config заключаются только в строках соединения и конфигурациях регистратора Elmah.

Кроме того, код, который регистрирует глобальные фильтры:вполне стандартно (я не касался этого):

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
}

Может быть, в конфигурации сервера есть что-то, что может вызвать другое поведение?Куда мне смотреть?

1 Ответ

1 голос
/ 06 апреля 2011

Как оказалось, проблема действительно была "тривиальной проблемой конфигурации", хотя она не имела ничего общего с asp.net или mvc как таковыми.

В панели управления моего хостинг-провайдера мне просто нужно было предоставить анонимному пользователю разрешение на чтение файлов из физической папки приложения.

Как только это было сделано, код приложения работал как положено.

Похоже, что поскольку анонимный (не прошедший проверку подлинности) пользователь не имел разрешений на чтение чего-либо из физической файловой системы, IIS интерпретировал это как ошибку 401 и автоматически перенаправил все запросы на настроенный метод входа в систему (для которого было установлено значение «Формы») , приводя к этому довольно странному сообщению об ошибке.

...