从App_Code访问asp.net配置文件

时间:2009-10-20 04:58:17

标签: asp.net inheritance asp.net-profiles app-code

我正在创建一个基类,从中可以派生出特定的页面。也就是说,它们不是从System.Web.UI.Page继承我的页面,而是继承自MyPage(继承自System.Web.UI.Page)。

但是,我似乎无法访问Profile属性。即使它们都继承自Page,但如果我处于实际的页面级别,我只能访问Profile属性。

我确定这只是我对页面生命周期的误解,但有没有办法从App_Code中定义的自定义类访问配置文件?

3 个答案:

答案 0 :(得分:2)

当您在页面中时,您可以使用ProfileCommon类来访问配置文件。在编译Web项目期间,asp.net会自动从web.config配置文件设置生成profilecommon类。

如果您想使用app_code文件夹中的配置文件,则必须使用profilebase类。页面中可用的Profilecommon也派生自此类。

Profilebase可以像这样访问

HttpContext.Profile or HttpContext.Current.Profile

要阅读个人资料值,您需要执行以下操作

HttpContext.Profile.GetPropertyValue("propertyName");

要为您需要编写的配置文件写入值

HttpContext.Profile.SetPropertyValue("propertyName", "propertyValue");

答案 1 :(得分:0)

您可以通过将强类型配置文件属性转换为ProfileCommon类型来访问它:

Dim Profile as ProfileCommon = CType(HttpContext.Current.Profile, ProfileCommon)

Profile.MyProperty1 = "Testing"
Profile.MyProperty2 = "Cool"

答案 2 :(得分:0)

如果要检索其他用户(而不是活动用户)的配置文件属性值,则可以使用:

Dim theUser As MembershipUser = Membership.GetUser(userID)
Dim theUserProfile As ProfileBase = ProfileBase.Create(theUser.UserName, True)
Dim theProperty As String = theUserProfile.GetPropertyValue("Property")

您在后面的代码中使用了ProfileCommon,但它在App_Code中不可用。

参考:MSDN