ASP.Net Web Application Security не работает на IIS 7? - PullRequest
5 голосов
/ 20 января 2011

Я столкнулся с странной проблемой

Я использую Visual Studio 2010, SQL Express 2008 на Win Server 2008

после запуска мастера безопасности (создан для одного пользователя, установите права доступа, как запретить анонимный доступ).и разрешить созданного пользователя) и нажав F5 -> сайт работает нормально.

, когда я перемещаю папку в IIS 7 и "преобразовываю в приложение", появляется страница входа, но она не принимает пароль, который я предоставил.

мне сказали, что на этот вопрос ответят только гении из Stackoverflow.

я использую .Net 4, режим управляемого пиплина -> неинтегрированный

настройки IIS:

Anonymous Auth.-> Включено

Forms Auth.-> Включено

Олицетворение ASP.Net, Базовая аутентификация, Дайджест-аутентификация, Аутентификация Windows -> Отключено

web.config

<configuration>
  <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated     Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <authorization>
      <deny users="?"/>
      <allow users="statmaster"/>
    </authorization>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"     enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
      </providers>
    </membership>

    <profile>
      <providers>    
        <clear/>    
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>
    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"     connectionStringName="ApplicationServices" applicationName="/"/>

        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
      </providers>
    </roleManager>
  </system.web>

  <system.webServer>  
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

имя пользователя существует в таблице aspnet_Users, а имя пользователя «зашифровано» в таблице aspnet_Membership

1 Ответ

4 голосов
/ 20 января 2011

Прочтите статью

Всегда устанавливайте свойство applicationName при настройке членства в ASP.NET 2.0 и других провайдеров.

, попробуйте создать новый веб-сайт и поставить приложениекомпонент в корне в случае, если имя приложения web.config = "/"

Я надеюсь, что это решит это

  <membership>
        <providers>
            <clear/>
            <add name="AspNetSqlMembershipProvider"
                type="System.Web.Security.SqlMembershipProvider, System.Web,      Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="LocalSqlServer"
                enablePasswordRetrieval="false"
                enablePasswordReset="true"
                requiresQuestionAndAnswer="true"
  requiresUniqueEmail="false"
                passwordFormat="Hashed"
                maxInvalidPasswordAttempts="5"
                minRequiredPasswordLength="7"
                minRequiredNonalphanumericCharacters="1"
                passwordAttemptWindow="10"
                passwordStrengthRegularExpression="" 
                applicationName="/" 
            />
        </providers>
  </membership>

http://weblogs.asp.net/scottgu/archive/2006/04/22/Always-set-the-_2200_applicationName_2200_-property-when-configuring-ASP.NET-2.0-Membership-and-other-Providers.aspx

...