2008-12-05 11 views
6

Podczas rozpoczynania nowego projektu wymagającego korzystania z dostawców członkostwa wykryłem, że nie można połączyć się ze zdalną bazą danych zawierającą bazę danych członkostwa.Konfigurowanie domyślnego narzędzia AspNetSqlProvider do wskazywania na zdalną bazę danych

Uruchomiłem program aspnet_regsql i udało mi się utworzyć bazę danych członkostwa na serwerze zdalnym, ale kiedy przejdę do konfiguracji ASPNET (serwer programistyczny cassini), nie połączy się on ze zdalnym serwerem.

Odpowiedz

17

Po wielu poszukiwaniach okazało się, że domyślny dostawca członkostwa określony w pliku machine.config (c: \ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG) zawsze wskazywał na serwer SQL uruchomiony na hoście lokalnym.

Zamiast modyfikowania machine.config istnieje sposób, aby ustawić go w pliku web.config projektów:

1) Konfiguracja ciąg połączenia do zdalnej bazy danych

<connectionStrings> 
     <add name="aspnet_membership" connectionString="<your_connection_string>"/> 
    </connectionStrings> 

2) <system.web> przedefiniować domyślnego dostawcy:

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

<remove name="AspNetSqlMembershipProvider"/> jest kluczem! Wszystkie pozostałe klucz/wartości zostały zaczerpnięte bezpośrednio z machine.config

+0

Ty jdiaz, jesteś CZŁOWIEKIEM! Utknąłem, próbując uruchomić to na mojej nie-domyślnej instancji SQLExpress na wiele godzin. Działa teraz świetnie. Dzięki jeszcze raz! – knslyr

+0

Natknąłem się na to dzisiaj. Polecenie '' jest już zawarte w mojej sekcji ''. Więc jestem dobry? – jp2code

0

Oto rozwiązanie:

Krok 1: Uruchom Visual Studio wiersz polecenia Typ: aspnet_regsql Podaj swój serwer: jeśli SQLEXPRESS następnie server = nazwa hosta \ SQLEXPRESS * ** * ** * *** * Użyj uwierzytelniania systemu Windows

krok 2: Skopiuj to do internetowej config.Dont sp uściślij nazwę użytkownika lub hasło, ponieważ łączysz się z uwierzytelnianiem systemu Windows, dlatego mamy zintegrowane zabezpieczenia = true.

krok 3: Zmiana zabezpieczenia> Typ uwierzytelniania na administracji internetowej narzędzie "z Internetu".

Ciesz się teraz.

1

krok 2: skopiuj to:

<remove name="LocalSqlServer"/> 

<add name="LocalSqlServer" connectionString="Data Source=VMK\sqlexpress;Initial Catalog=commodity_exchange;Integrated Security=True" providerName="System.Data.SqlClient"/> 

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

Musiałem dodać to linie, aby moje Role i personel profilu na podstawie klasy Skład pracy:

<profile> 
     <providers> 
      <clear/> 
      <add name="AspNetSqlProfileProvider" 
      connectionStringName="aspnet_membership" 
      applicationName="/" 
      type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
     </providers> 
    </profile> 

    <roleManager enabled="true"> 
     <providers> 
      <clear/> 
      <add name="AspNetSqlRoleProvider" 
      connectionStringName="aspnet_membership" 
      applicationName="/" 
      type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      <add name="AspNetWindowsTokenRoleProvider" 
      applicationName="/" 
      type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
     </providers> 
    </roleManager> 
Powiązane problemy