2012-07-17 66 views
2
獲取配置文件數據

我必須在某個點的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的答案中描述的解決方法可以正常工作。

回答

1

顯然你正試圖訪問請求對象,這是不可能在你的情況。

請查看以下鏈接,並在可能的情況下應用其中一種解決方法。 http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart

如果您提供更多信息,您嘗試實現什麼,我們可以找到另一種方法。

+0

我已經閱讀過有關集成模式的內容。這個問題似乎出現在BaseProfile中,它嘗試訪問屬性訪問中的請求對象。我嘗試在應用程序啓動時聚合所有配置文件的索引屬性。但在我在這篇文章中做出解決方法之前,我想確定我不會錯過任何東西。 – aikixd 2012-07-17 11:31:35

+0

爲什麼你這個請求對象特別在這種情況下?如果你不需要它做一個空控制(或嘗試阻止)並繼續你的過程。 – 2012-07-17 11:42:39

+0

我不使用Request對象,我需要從配置文件中獲取屬性值,當我嘗試時會引發異常。 – aikixd 2012-07-17 11:48:53

相關問題