2012-02-15 2 views
2

Я создал пользовательский поставщик членства и роли, чтобы использовать аутентификацию и авторизацию, встроенные в 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, я вижу, что информация, введенная в форму проходит проверку, но не предоставляется доступ к страницам с ограниченным разрешенным доступом.

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

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

+0

Вы создали роли на сервере развертывания? –

+0

Я сделал, заполненные таблицы развертывания соответствуют таблицам разработки. – XBigTK13X

+0

Я предполагаю, что никакие прокси не находятся в миксе? Мы видели, что файлы cookie auth зависят от определенных прокси-конфигураций. –

ответ

0

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

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

0

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

похоже проблема разрешений!

Смежные вопросы