Проверка подлинности asp.net mvc работает только при отладке - PullRequest
1 голос
/ 14 марта 2011

У меня есть приложение asp.net mvc, которое отлично работает в visual studio, но когда я публикую его на локальном хосте, я не могу войти.

Я уже сократил код и обнаружил, что MembershipService.ValidateUser(model.UserName, model.Password) не будет работать, но следующая строка FormsService.SignIn(model.UserName, model.RememberMe) работает нормально.

В веб-конфигурации я получил следующее:

<membership defaultProvider="MySqlMembershipProvider">
  <providers>
    <clear/>
    <add autogenerateschema="true"
             connectionStringName="ConnString"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="false"
             requiresUniqueEmail="false"
             passwordFormat="Hashed"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression=""
             applicationName="/"
             name="MySqlMembershipProvider"
             type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
    </providers>
 </membership>
 <profile defaultProvider="MySqlProfileProvider">
   <providers>
     <clear/>
     <add name="MySqlProfileProvider"
             type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
             connectionStringName="ConnString" applicationName="/" autogenerateschema="true"/>
    </providers>
  </profile>
  <roleManager enabled="true" defaultProvider="MySqlRoleProvider">
    <providers>
      <clear/>
      <add name="MySqlRoleProvider" autogenerateschema="true" connectionStringName="ConnString" applicationName="/"
             type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
      </providers>
   </roleManager>

С ConnString все в порядке, потому что другие части приложения работаютпросто отлично (включая FormsService.SignIn).

Где физический путь отладки приложений Visual Studio, чтобы я мог сравнить Web.configs с тем, что на моем IIS localhost?

Ответы [ 3 ]

2 голосов
/ 15 марта 2011

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

Я строил проект с помощью фреймворка 4.0, но развертывал его в пуле приложений с использованием .net framework 2.0.

Хотя я все еще нахожу странным, что метод ValidateUser зависит от фреймворка

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

Для вас, ребята, у которых может возникнуть эта проблема, моя проблема заключалась в моем пути в разделе authentication.forms раздела web.config.Мое приложение работало в каталоге wwwroot/myappdir, мой путь логически был установлен на /myappdir

<authentication mode = "forms">
    <forms loginUrl="/Login.aspx" path="/myappdir" name=".ASPXFORMSAUTH" protection="Validation">
</authentication>

Когда я запускал отладчик, он без проблем работал бы, запуская приложение с http://localhost:xxxx/myappdir/.

Тем не менее, это был единственный веб-сайт, работающий на моем сервере, поэтому для удобства я протестировал в различных браузерах от корня веб-сайта http://localhost/ и продолжал возвращаться к форме входа в систему.

Прошло несколько часов, прежде чем я понял, что происходит.

0 голосов
/ 14 марта 2011

Возможно, вам понадобится добавить домен в ваш web.config при публикации.

<system.web>

    <authentication mode="Forms" >
        <forms loginUrl="~/Account/LogOn" timeout="10080" path="/" protection="All" domain="yourdomain.com" />
    </authentication>

</system.web>

ПРИМЕЧАНИЕ. При отладке в visual studio НЕ включайте домен.Вы можете использовать функцию преобразования web.config для автоматизации этого.

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