我在移動碼出App_Code
到類庫的過程。Membership.CreateUser()是一個類庫
我創建的用戶編程方式使用Membership.CreateUser
。
我怎麼能繼續這樣做,我的類庫那裏是給會員提供我在web.config
配置進不去裏面?
我在移動碼出App_Code
到類庫的過程。Membership.CreateUser()是一個類庫
我創建的用戶編程方式使用Membership.CreateUser
。
我怎麼能繼續這樣做,我的類庫那裏是給會員提供我在web.config
配置進不去裏面?
在您的班級中爲System.Web.Security
名稱空間添加使用指令 - 這將使您可以直接訪問Membership
類。
C#:
using System.Web.Security;
VB.NET:
Imports System.Web.Security
已經可以訪問成員資格類。因爲在類庫內部它不能讀取web.config,它似乎使用了一些默認提供程序,而不是我在web.config文件中配置的SQL Sever。 – Chris
@Chris - 一個類庫將在某個上下文中運行 - 它將有權訪問它所運行的應用程序的配置。 – Oded
在我的班級圖書館裏面,我會打電話: 'MembershipUser NewUser = Membership.CreateUser(userName,password,email,「no question」,「no answer」,true,out createStatus);' 「密碼爲」 wonder123" ,這是不是默認(沒有非-α),但可以接受該應用的web.config具有這樣的: '<成員defaultProvider = 「MYPROVIDER」> \t \t \t
您可以在任何地方訪問它becouse Membership類是由ASP.NET提供系統設置好的當前提供的靜態表示。
我被整個web.config文件複製到我的app.config解決了我的問題。我正在使用控制檯應用程序。我以爲我已經複製的必要部分,但直到我複製一切,該數據沒有得到數據庫
之前,我告訴你的代碼部分如何工作 - 你需要了解的設置獲得如何在這種情況下的裝起來。
當你有哪些是要加載.dll
文件的Web應用程序 - 這.dll
文件要訪問該應用程序已配置MembershipProvider
- 你必須做出一些假設。
MembershipProvider
Web.Config
MembershipProvider
設置載入你.dll
正確因爲你.dll
文件應包括在Web應用程序的/bin
目錄中,您應該可以依靠Web應用程序的配置而不是必須提供自己的。
要做到這一點,開始什麼俄德提到了他的答案 - 那麼該文件中,你可以做類似如下 - 在您.dll
的代碼創建到System.Web.Security
參考:
if (Membership.Provider != null) {
Membership.Provider.CreateUser(...);
} else {
// Do something appropriate in a case where there is no Membership Provider
}
在這點 - 如果上述不起作用,很可能是因爲您的Web應用程序沒有配置適當的提供程序。
了一份關於爲什麼做這樣...
的原因,你應該讓Web應用程序提供的配置是符合的Separation of Concerns原則。MembershipProvider
是一個提供默認功能的抽象類 - 幾乎沒有實現。
換言之 - 它定義了要管理成員,您需要能夠執行諸如CreateUser()
和GetAllUsers()
之類的操作。它還表示您應該可以配置設置,例如指定PasswordFormat
並確定每個用戶是否爲RequiresUniqueEmail
。
它沒有做的是告訴你在哪裏存儲你的用戶信息。它留給實現者(System.Web.Providers.DefaultMembershipProvider
或YourNS.YourMembershipProvider
)。
然後使用MembershipProvider
的應用程序確定要提供什麼設置以及要使用哪個實現。換句話說 - 這是YourNS.YourMembershipProvider
指定信息如何管理的工作,但它很可能是應用程序誰應該確定在存儲中使用哪些ConnectionString
等。
因此 - 遵循上面列出的模式,您可以提供三個獨立的層:
MembershipProvider
實施MembershipProvider
,注意,如果按照這種模式 - 你現在可以切換MembershipProviders
在以後的時間,而不必改變其他層 - 因爲這些層依賴於基類MembershipProvider
- 而不是依賴於您的具體實現。這可能非常有價值。
感謝您的支持 – codingbiz
很高興幫助。 :)我不得不在不同的項目中多次這樣做 - 我記得最初幾次是多麼令人沮喪,因爲要弄清楚運動部件。 –
您在asp.net應用程序中有一個類,但它無法訪問web.config中的信息?它是否在自己的web.config文件夾中? – Paparazzi