Сайт перенаправляет на неверную страницу входа на сервер, но локально работает нормально - PullRequest
3 голосов
/ 27 июля 2011

Итак, я работаю над сайтом MVC3.Я занимаюсь локальной разработкой, затем сервер сборки запускается при регистрации и отправляет его на сервер dev, если сборка работает.

Мой локальный ящик в Win7 с VS2010 SP1 с использованием IIS Express для локальной сетисервер.Сервер Win2k8 Server R2.На моем локальном компьютере пакет MVC3 установлен, на сервере у меня есть библиотеки MVC3, связанные с приложением, поэтому мне не нужно устанавливать их на устройство.

Вот где это становится странным.По умолчанию для маршрутов установлено значение HomeController, которое помечено атрибутом [Authorize], поэтому первое, что должен увидеть пользователь, не прошедший проверку подлинности, - это страница входа.Я использую Аутентификацию по формам с довольно простой настройкой:

<authentication mode="Forms">
   <forms loginUrl="~/Auth/LogIn" timeout="2880" />
</authentication>

Единственное, что отличается от значения по умолчанию - это URL, на который он перенаправляет.Теперь это отлично работает в IIS Express.Так что я обязуюсь, это строит, меня подталкивают к разработке.Редактор конфигурации в диспетчере IIS подтверждает, что loginUrl на сервере по-прежнему ~/Auth/LogIn.Это подтверждается и непосредственно в web.config.Но когда я пытаюсь зайти на сайт, меня перенаправляют на /Account/Login?ReturnUrl=%2f.Я знаю, что приложение работает нормально, как будто я захожу на /Auth/Login/ вручную, я получаю страницу входа, я могу войти в систему и использовать сайт.

Я никогда раньше не видел такого поведения,кто-нибудь еще сталкивался с этим, и как вы это исправили?

Ответы [ 4 ]

3 голосов
/ 17 августа 2011

У нас была та же проблема с RTM-версией MVC 3. Мне было сложно следовать ответу Варуна, но в конечном итоге это привело к решению.Чтобы сделать это понятным для других:

В вашем файле Web.config у вас, вероятно, уже есть что-то подобное вsection:

<authentication mode="Forms">
  <forms loginUrl="Login/Login" defaultUrl="Home"/>
</authentication>

Хотя это работает, как и ожидалось, на компьютере с Windows 7, по некоторым причинам оно не работает на сервере Windows 2008 R2 (другая версия какого-либо компонента? Я не знаю).Чтобы это работало, мне нужно было добавить эту строку в раздел :

<add key="loginUrl" value="Login/Login" />
1 голос
/ 06 августа 2011

ScottGu ответил на аналогичный вопрос в своем блоге - это, по-видимому, ошибка в RC2 MVC 3.

Обходной путь должен добавить эту запись:

<add key="autoFormsAuthentication" value="false" />

в ваш раздел в корневом файле web.config веб-приложения.

Однако это больше не работает. Теперь вам нужно сделать следующее:

Это больше не работает с RTM

Вам нужно добавить к настройкам приложения в Web.Config

Проблемы в ConfigUtil в WebMatrix.WebData

private static string GetLoginUrl()
{
    return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ??            FormsAuthenticationSettings.DefaultLoginUrl;

}

staticFormsAuthenticationSettings()
{
    LoginUrlKey = "loginUrl";
    DefaultLoginUrl = "~/Account/Login";
}
0 голосов
/ 04 августа 2011

Если параметры Ofer Zeligs высыхают, попробуйте следующее:

Узнайте, какая конфигурация использовалась при сборке (или) развертывании на сервере, и проверьте соответствующие файлы преобразования web.config.Или, если вы не используете преобразования web.config, выясните, как поддерживается конфигурация для разных сред, и используйте эти знания, чтобы увидеть, все ли поддерживаемые отдельные конфигурации ВСЕХ ~/Auth/LogIn в ней.Часто существуют разные конфигурационные файлы для разных сред, и я видел, как они не синхронизируются.

0 голосов
/ 02 августа 2011

У меня есть несколько предложений. Они все из моего разума, так как я не могу физически проверить ваш сервер разработки и не сталкивался с такой проблемой. Эти предложения могут показаться глупыми и могут быть легко пропущены, но наиболее неприятные ошибки - это те, которые вызваны очевидными причинами, которые мы обычно не ищем, так как мы переходим к более сложным возможностям.

  1. Есть ли какие-либо связанные настройки в IIS сервера разработки на уровне server (в отличие от уровня site )? В частности, в разделе Аутентификация -> Аутентификация с помощью форм.

  2. Есть ли какие-либо связанные настройки в machine.config на сервере dev?

  3. Вы пытались выполнить полнотекстовый поиск в каталоге приложения на сервере dev, ища, скажем, "Account"?

...