Мое приложение заставляет меня перенаправлять на Account / LogOn? ReturnUrl =% 2f - PullRequest
4 голосов
/ 02 августа 2011

Я создал приложение MCV 3 и развернул его на сервере разработки в своей организации.Это работает нормально в моей машине разработки.Однако я заметил, что на сервере dev приложение перенаправляет меня на страницу Account / LogOn? ReturnUrl =% 2f даже после того, как я правильно вошел в систему.Я также вижу, что иногда некоторые ресурсы (CSS, Javascript, изображения) также не обслуживаются.

Ниже показано сообщение об ошибке.После обновления страницы приложение работает просто отлично.Если я не получаю доступ к приложению через некоторое время, ошибка возвращается.Есть идеи?

Ошибка сервера в приложении '/'.

Ресурс не найден.

Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей) могла быть удалена, сменила имя или временно недоступна.Пожалуйста, просмотрите следующий URL и убедитесь, что он написан правильно.

Запрошенный URL: / Account / LogOn

Ответы [ 5 ]

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

Это довольно часто. Для таблиц стилей ресурсов и т. Д. Обычно это результат отсутствия @ Content.Url. Я полагаю, что для решения других проблем вы могли бы жестко кодировать свои ссылки вместо использования @ Url.Action. Опять же, это часто, я сталкивался с этим несколько раз.

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

Я думаю, что / Account / Login указывает на корневой каталог при использовании IIS IIS, вы хотите указать на этот маршрут через виртуальный каталог. Если ссылка создается через что-то вроде <% = Html.ActionLink%>, то все в порядке. Но если у вас есть какой-то javascript и вы вызываете URL, или если вы жестко запрограммировали ссылки на / MyController / MyList, он не найдет его.

То же самое с файлами CSS. Если вы посмотрите, как осуществляется доступ к файлу Site.css при создании нового проекта, вы увидите что-то вроде этого:

' и т. Д. И т. Д.

Дайте мне знать, если это имеет смысл.

2 голосов
/ 23 октября 2012

Возможно, вы видите это, потому что ваш файл web.config имеет неправильный параметр allow role = "RoleNameHere"

Если вы настроили свою страницу веб-конфигурации для ролей, как показано ниже, убедитесь, что роль соответствует той, для которой вы установили роль входа в систему. Например, вы могли написать Administrators вместо правильного Administrator. Как только вы правильно напишите роль, ReturnUrl исчезнет, ​​и вы сможете снова войти на страницу после входа в систему.

<location path="AdminDepartments.aspx">
    <system.web>
      <authorization>
        <allow roles="Administrator"/>
        <deny users="*"/>
      </authorization>
    </system.web>
</location>
2 голосов
/ 15 августа 2011

Решением было отключить проверку подлинности с помощью форм в IIS.

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

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

В коде за стороной поместите его в класс, к которому могут обращаться все страницы:

Public String SiteRootPath = (New Control).ResolveUrl("~/");

На входной стороне вставьте файл главной страницы:

var jvSiteRootPath="<%=SiteRootPath %>";

Теперь вы можете использовать это для всех URL, на которые нужно ссылаться из корневого пути.

0 голосов
/ 21 января 2013

Я думаю, вам следует включить Anonymous Authentication вашего сайта вместе с Forms Authentication.

. Выберите ваше приложение на IIS, затем в представлении функций выберите аутентификацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...