Почему мой пользовательский членство и поставщик ролей работают локально, но не работают после развертывания? - PullRequest
2 голосов
/ 16 февраля 2012

Я создал пользовательский поставщик членства и ролей для использования аутентификации и авторизации, встроенных в ASP.NET MVC 4. Во время разработки приложения все шло гладко, пока я не попытался развернуть его в тестовой среде.

Запуск приложения в режиме отладки из Visual Studio работает отлично. Однако затем я использую развертывание Visual Studio одним щелчком мыши, чтобы загрузить свое приложение в экземпляр IIS, работающий на моем компьютере разработчика. Я могу загрузить приложение в свой браузер, но аутентификация больше не работает. Используя Fiddler, я вижу, что cookie отправляется обратно, но я не могу получить доступ к частям сайта, доступ к которым ограничен с помощью атрибутов [Authorize].

Ниже приведен соответствующий фрагмент из моего web.config.

<membership defaultProvider="PonosMembershipProvider">
  <providers>
    <clear />
    <add name="PonosMembershipProvider" type="Ponos.Identity.PonosMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/Ponos" />
  </providers>
</membership>
<roleManager enabled="true" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="Ponos.Identity.PonosRoleProvider" connectionStringName="DefaultConnection" applicationName="/Ponos" />
  </providers>
</roleManager>

Кроме того, я устанавливаю имя приложения в обоих пользовательских провайдерах с помощью логики следующим образом:

public override string ApplicationName
    {
        get
        {
            return "Ponos";
        }
        set
        {
            throw new NotImplementedException();
        }
    }

Кроме того, после присоединения к работающему экземпляру IIS я вижу, что информация, введенная в форму, проходит проверку, но доступ к страницам с ограниченным авторизованным доступом не предоставляется.

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

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

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

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

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

0 голосов
/ 21 февраля 2012

"Я вижу, что информация, введенная в форму, проходит проверку, но доступ к страницам с ограниченным авторизованным доступом запрещен."

похоже на проблему с разрешениями!

...