在ASP.NET Web应用程序中使用配置文件

时间:2011-03-27 15:55:38

标签: asp.net

  

可能重复:
  How to assign Profile values?

我正在阅读一本ASP.NET书籍,如果您在启动项目时选择Web应用程序,则表明您无法使用Profile。它只能在网站上运行。

Web应用程序有其他替代方案吗?或者您是否需要构建自己的个人资料系统。

1 个答案:

答案 0 :(得分:8)

如果您使用的是Web应用程序而不是网站,则可以使用配置文件提供程序,但是从您后面的aspx页面代码开箱即用Profile.MyProperty将无法使用。

这不是什么大问题,因为只需要一点努力就可以做类似的事情。在Converting a Web Site Project to a Web Application Project中提供的示例是如何将配置文件提供程序与Web应用程序一起使用的一个很好的起点。

总结上述文章的转换配置文件对象代码部分,创建一个ProfileCommon

public class ProfileCommon
{
    public Teachers Teachers
    {
        get
        {
            return (Teachers)
                HttpContext.Current.Profile.GetPropertyValue("Teachers");
        }
        set
        {
            HttpContext.Current.Profile.SetPropertyValue("Teachers",value);
        }
    }
}

然后在您的aspx代码后面,您现在可以

ProfileCommon Profile = new ProfileCommon();
protected void Button1_Click(object sender, EventArgs e)
{
    Teachers teachers = new Teachers();
    teachers.Add(new Teacher("scott"));
    teachers.Add(new Teacher("bob"));
    teachers.Add(new Teacher("paul"));

    Profile.Teachers = teachers;    
}

ProfileCommon实例化为每个页面的字段的替代方法是使其及其方法保持静态,只需从后面的代码Profile.Teachers中调用类属性

public static class Profile
{
    public static Teachers Teachers
    {
        //......
    }
}

这不是一个巨大的优势,但使您的代码更类似于ASP.NET Web站点项目。

编辑评论与答案无关
两种项目类型之间存在关键差异,但对于我的项目,我更喜欢Web应用程序。我有一个偏见,因为为Web应用程序项目创建TFS构建管理器的构建配置文件比对Web站点项目更容易。此外,似乎微软强调网站项目,然后退出它们,转而支持Web应用程序项目。