2008-12-05 4 views
6

Khi bắt đầu một dự án mới yêu cầu sử dụng nhà cung cấp thành viên, tôi thấy rằng tôi không thể kết nối với cơ sở dữ liệu từ xa chứa cơ sở dữ liệu thành viên.Thiết lập AspNetSqlProvider mặc định để trỏ đến cơ sở dữ liệu từ xa

Tôi chạy aspnet_regsql và có thể tạo cơ sở dữ liệu thành viên trên máy chủ từ xa nhưng khi tôi đi đến cấu hình ASPNET (máy chủ phát triển cassini), nó sẽ không kết nối với máy chủ từ xa.

Trả lời

17

Sau nhiều lần tìm kiếm, tôi thấy rằng Nhà cung cấp thành viên mặc định được chỉ định trong machine.config (c: \ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG) luôn trỏ đến Máy chủ SQL đang chạy trên máy chủ cục bộ.

Thay vì sửa đổi machine.config có một cách để thiết lập nó trong các dự án web.config:

1) Thiết lập các chuỗi kết nối cơ sở dữ liệu từ xa

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

2) Trong <system.web> xác định lại nhà cung cấp mặc định:

<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"/> là chìa khóa! Tất cả các khóa/giá trị khác được lấy trực tiếp từ Machine.config

+0

Bạn jdiaz, là THE MAN! Tôi đã cố gắng để có được điều này làm việc trên trường hợp SQLExpress không mặc định của tôi trong nhiều giờ. Hoạt động tốt ngay bây giờ. Cảm ơn một lần nữa! – knslyr

+0

Tình cờ gặp phải điều này ngày hôm nay. Lệnh ' 'đã được bao gồm trong phần' 'của tôi. Vì vậy, tôi tốt? – jp2code

0

Dưới đây là giải pháp:

bước 1: Khởi động Visual Studio Command Prompt Loại: aspnet_regsql Xác định máy chủ của bạn: nếu SQLEXPRESS sau đó máy chủ = tên máy \ SQLExpress * ** * ** * *** * Sử dụng Windows Authentication

bước 2: Sao chép này để web config.Dont sp tạo tên người dùng hoặc mật khẩu vì ur kết nối với xác thực cửa sổ, đó là lý do chúng tôi có bảo mật tích hợp = true.

bước 3: Thay đổi an ninh> Kiểu xác minh trên công cụ quản trị web để "Từ Internet".

Thưởng thức ngay bây giờ.

1

bước 2: copy này:

<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> 

tôi cần phải thêm dòng này để có được vai trò của mình và nhân viên hồ sơ dựa trên lớp Membership làm việc:

<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>