MVC 1 и IIS 7, код ошибки 4011 - PullRequest
4 голосов
/ 28 апреля 2011

У меня приложение MVC 1, работающее на IIS 7.5. После завершения некоторых операций я получил вызов RedirectToRoute, используя System.Web.Routing.RouteValueDictionary в качестве второго параметра. В основном это требует «детали» конкретного объекта по идентификатору.

Когда этот код встречается на моем рабочем сервере под управлением IIS 7.5, он возвращает меня на страницу входа и имеет значение ReturnUrl в URL-адресе вверху. Как только я снова вхожу в систему, он переходит на страницу, на которую он должен был перейти непосредственно через RedirectToRoute.

Он не делает этого на локальном хосте. Подробности в журнале событий:

Код события: 4011
Сообщение о событии: An произошло необработанное исключение
...
Домен приложения: -domain-
Уровень доверия: Полный
Путь к приложению: c: \ inetpub \ wwwroot \
...
Запросить URL: http://mysite.com/405/Acquisition
Путь запроса: / properties / 405 / Приобретение
Пользователь адрес хоста: -my внешний ip-
Пользователь: - зарегистрирован в пользователе -
Есть аутентифицировано: True
Тип аутентификации: Формы
Тема имя учетной записи: NT AUTHORITY \ NETWORK СЕРВИС

Теперь, конечно, этот путь физически не существует на сервере, поэтому используется MVC. Так что я предполагаю, что это что-то вроде разрешений в IIS7? Тем более, что он переходит на правильную страницу (и отображает подтверждающее сообщение) при повторном входе в систему. Разве это не код события 4011?

Любая помощь приветствуется.

EDIT:

По вопросу Филла, вот тот фрагмент web.config:

<modules runAllManagedModulesForAllRequests="true">
  <remove name="ScriptModule" />
  <remove name="UrlRoutingModule" />
  <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>

Ответы [ 2 ]

0 голосов
/ 06 мая 2011

Попробуйте <identity impersonate="false" /> в web.config

0 голосов
/ 28 апреля 2011

Это почти наверняка проблема с разрешениями, но, вероятно, не проблема с разрешениями IIS.

Функция перенаправления на страницу входа - это функция ASP .NET, которая настраивается в вашем файле Web.config. Похоже, вы используете проверку подлинности с помощью форм, поэтому она будет находиться под:

<configuration>
    <system.web>
        <authentication mode="Forms">
            <forms loginurl="~/some-login-url">
        </authentication>
    </system.web>
</configuration>

Используете ли вы какие-либо атрибуты [Authorize] (я не уверен, существуют ли они даже в MVC 1)? У вас есть авторизация в вашем файле Web.config?

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

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

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

...