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

5

可能是重复问题:
如何分配个人资料值?

我正在阅读一本ASP.NET书籍,它说如果你在开始项目时选择Web应用程序,则无法使用Profile。 它只能在Web站点下运行。

对于Web应用程序,是否有任何替代方法? 或者您需要构建自己的个人资料系统。


请也参考此贴[https://dev59.com/_XRC5IYBdhLWcg3wD8pV]。 - jamiebarrow
1个回答

8
如果您使用的是 Web 应用程序而不是网站,则可以使用配置文件提供程序,但在 aspx 页面代码后台中,您将无法使用“Profile.MyProperty”。这并不是什么大问题,只需稍加努力,您就能够做类似的事情。将 Web 站点项目转换为 Web 应用程序项目 提供的示例是如何在 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应用程序。我有偏见,因为为TFS Build Manager创建Web应用程序项目的构建配置文件比为Web网站项目容易得多。此外,微软似乎强调Web网站项目,然后放弃了它们,转而支持Web应用程序项目。

你可能希望ProfileCommon从ProfileBase继承,例如:public class ProfileCommon : ProfileBase - Patrik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接