我必須在某個點的Application_Start下面的代碼不能在的Application_Start
MembershipUserCollection users = Membership.GetAllUsers();
foreach (MembershipUser u in users)
{
ProfileBase profile = ProfileBase.Create(u.UserName, false);
if (profile["Index"] != null)
{
// Some code
}
}
的問題是,當我試圖訪問配置文件屬性我取「請求不可用在這方面「httpException。我曾嘗試使用profile.GetPropertyValue,但也沒有運氣。
爲什麼配置文件需要請求對象,我如何才能使它工作?
編輯:
我特地到.NET代碼,發現在某些時候SqlProfileProvider.GetPropertyValuesFromDatabase(string userName, SettingsPropertyValueCollection svc)
被調用時,其內部掌握這串代碼:
if (!current.Request.IsAuthenticated)
顯然,這不會如果不是在請求上下文中工作。 Onur的答案中描述的解決方法可以正常工作。
我已經閱讀過有關集成模式的內容。這個問題似乎出現在BaseProfile中,它嘗試訪問屬性訪問中的請求對象。我嘗試在應用程序啓動時聚合所有配置文件的索引屬性。但在我在這篇文章中做出解決方法之前,我想確定我不會錯過任何東西。 – aikixd 2012-07-17 11:31:35
爲什麼你這個請求對象特別在這種情況下?如果你不需要它做一個空控制(或嘗試阻止)並繼續你的過程。 – 2012-07-17 11:42:39
我不使用Request對象,我需要從配置文件中獲取屬性值,當我嘗試時會引發異常。 – aikixd 2012-07-17 11:48:53