Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net跟踪会话中具有登录控件的配置文件变量?_C#_Asp.net_Login Control_Asp.net Profiles - Fatal编程技术网

C# asp.net跟踪会话中具有登录控件的配置文件变量?

C# asp.net跟踪会话中具有登录控件的配置文件变量?,c#,asp.net,login-control,asp.net-profiles,C#,Asp.net,Login Control,Asp.net Profiles,我一直在使用visual studio 2010在asp.net中创建一个带有购物车的网站。我的问题是关于配置文件变量和登录控件 我遵循了一个相当直接的教程,将购物车添加到我的站点 : 正如您在购物车教程中所看到的,作者使用了一个配置文件来跟踪购物车 当我这样做的时候,我希望购物车在每个不同的用户登录时保持不变,因为我们使用的是一个配置文件,而不是会话变量。幸运的是,当我以不同的用户身份使用登录控件登录时,购物车实际上会重置 所以我的问题是,配置文件如何跟踪每个用户的购物车。我几乎可以肯定登录控

我一直在使用visual studio 2010在asp.net中创建一个带有购物车的网站。我的问题是关于配置文件变量和登录控件

我遵循了一个相当直接的教程,将购物车添加到我的站点

:

正如您在购物车教程中所看到的,作者使用了一个配置文件来跟踪购物车

当我这样做的时候,我希望购物车在每个不同的用户登录时保持不变,因为我们使用的是一个配置文件,而不是会话变量。幸运的是,当我以不同的用户身份使用登录控件登录时,购物车实际上会重置

所以我的问题是,配置文件如何跟踪每个用户的购物车。我几乎可以肯定登录控件没有设置会话变量,因此我认为Profile对象不会自动从登录控件检测到不同的用户。。。是吗

请帮助我理解这一点,作者不太清楚


非常感谢

将购物车和配置文件结合在一起的代码的重要部分在最后发生在每次登录的幕后:

void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID);
    if (anonymousProfile.SCart != null)
    {
        if (Profile.SCart == null)
            Profile.SCart = new ShoppingCartExample.Cart();

        Profile.SCart.Items.AddRange(anonymousProfile.SCart.Items);

        anonymousProfile.SCart = null;
    }

    ProfileManager.DeleteProfile(e.AnonymousID);
    AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

您可以在MSDN上阅读有关配置文件等的信息-例如:

将购物车和配置文件放在一起的代码的重要部分在每次登录时都发生在幕后:

void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs e)
{
    ProfileCommon anonymousProfile = Profile.GetProfile(e.AnonymousID);
    if (anonymousProfile.SCart != null)
    {
        if (Profile.SCart == null)
            Profile.SCart = new ShoppingCartExample.Cart();

        Profile.SCart.Items.AddRange(anonymousProfile.SCart.Items);

        anonymousProfile.SCart = null;
    }

    ProfileManager.DeleteProfile(e.AnonymousID);
    AnonymousIdentificationModule.ClearAnonymousIdentifier();
}

您可以在MSDN上阅读有关配置文件等的信息-例如:

基本上,它的工作方式是使用身份验证信息来识别用户。因此,当一个请求来自一个经过身份验证的用户时,框架使用用户名(通常以身份验证cookie的形式)将配置文件信息加载到当前请求中

在您提供的示例中,因为作者使用的是允许匿名用户也可以使用配置文件信息


当匿名用户发出请求时,AnonymousIdentificationModule模块创建一个GUID并将其写入名为.ASPXANONYMOUS的持久cookie中。此GUID将用作ProfileProvider的用户名。

基本上,它的工作方式是使用身份验证信息来标识用户。因此,当一个请求来自一个经过身份验证的用户时,框架使用用户名(通常以身份验证cookie的形式)将配置文件信息加载到当前请求中

在您提供的示例中,因为作者使用的是允许匿名用户也可以使用配置文件信息


当匿名用户发出请求时,AnonymousIdentificationModule模块创建一个GUID并将其写入名为.ASPXANONYMOUS的持久cookie中。此GUID将用作ProfileProvider的用户名。

关于会话,这并不完全正确。会话用于存储有关已登录用户的特定信息。但是,成功登录后由asp:Login控件设置的有关登录用户的信息也存储在主体中,您可以从HttpContext.Current.user对象访问该主体。另一个存储用户信息的位置是名为.ASPXAUTH cookie的cookie中。因此,可以从几个位置检索用户信息。但是概要文件将依赖于IPrincipal类型的对象。至于匿名用户,Peter Mourfield给了你一个很好的答案,所以我不会重复他的话。

关于会话,这并不完全正确。会话用于存储有关已登录用户的特定信息。但是,成功登录后由asp:Login控件设置的有关登录用户的信息也存储在主体中,您可以从HttpContext.Current.user对象访问该主体。另一个存储用户信息的位置是名为.ASPXAUTH cookie的cookie中。因此,可以从几个位置检索用户信息。但是概要文件将依赖于IPrincipal类型的对象。至于匿名用户,Peter Mourfield给了你一个很好的答案,所以我不会重复他的话。

你读过ASP.NET的个人资料吗?是的,但这并不能像彼得那样解释。。。我不会白白放弃100美元的赏金的。谢谢,你读过ASP.NET档案吗?是的,但这并不能像彼得那样解释。。。我不会白白放弃100美元的赏金的。谢谢