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

StackOverflow https://stackoverflow.com/questions/9301572

Вопрос

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

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

Ниже приведен соответствующий фрагмент из моего 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

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

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

Другие советы

«Я вижу, что информация, введенная в форму, передает валидацию, но что доступа не предоставляется страницам, которые ограничивают авторизованный доступ».

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top