相关疑难解决方法(0)

为什么ASP.NET中存在两种不兼容的会话状态类型?

我在ASP.NET MVC中看到了两种使用会话数据的方法:

  • System.Web.SessionState.HttpSessionState,可用 HttpApplication
  • System.Web.HttpSessionStateBase,可用 Controller

存储在一个中的数据似乎在另一个中可用.

不幸的是System.Object,这两种类型的唯一共同祖先是,这意味着我不能为任何一种抽象创建可重用的实用程序代码.

为什么API会这样?我失踪的两者之间是否有重要区别?

.net asp.net session-state asp.net-mvc-3

58
推荐指数
1
解决办法
1万
查看次数

会话存储与类存储

我总是在一个Session变量中为用户存储数据(在他们登录后),因此我可以在任何页面上使用该数据.
我发现另一种全局存储信息的方法是将它存储在一个类中,使用{ get; set;},然后从任何页面调用它.

现在,我已经使用这两种方法作为测试,它们都运行得很好:

Session["LoginId"] = rdr["uniqueIdentifier"].ToString();

Member.LoginId = rdr["uniqueIdentifier"].ToString();

哪里(在Member.cs中)

public class Member
{
    public static int Challenges { get; set; }
    public static int NicknameId { get; set; }
    public static string LoginId { get; set; }
    public static string FriendsListId { get; set; }

    public static void ClearVariables()
    {
        Challenges = 0;
        NicknameId = 0;
        LoginId = null;
        FriendsListId = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

Global.asax中

void Session_End(object sender, EventArgs e) 
    {
        Member.ClearVariables(); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net class session-variables

4
推荐指数
2
解决办法
6304
查看次数

在MVC4和类库之间共享会话的最佳方式

背景:

ASP.NET会话状态使您能够在用户在Web应用程序中导航ASP.NET页面时存储和检索用户的值.这适用于该应用程序但是当我们在该应用程序中引用了一个类库并且我们需要Session Variables在该库中时,我必须将它传递给每个方法,因为我没有使用依赖注入.

问题:

我有一个控制器,它进行Facebook身份验证如下:

 public class FacebookController : Controller
    {
        private FacebookGateway FacebookGateway = new FacebookGateway();

        // GET: /Facebook/

        public ActionResult Index()
        {
            string code = Request.QueryString["code"];
            TokenResponse tokenResponse = FacebookGateway.GetTokenResponse(code);
            Session["AccessToken"] = tokenResponse.Access_token;
            return View();
        }

        public ActionResult Friends()
        {

            string accessToken = Session["AccessToken"].ToString();

            WebRequest request = WebRequest.Create(instanceUrl + @"profileUrl-Here");
            request.Method = "GET";
            request.Headers.Add("Some Header " + accessToken);
            WebResponse response = request.GetResponse();
            string str = String.Empty;

            if (response == null)
            {
            }
            else
            {
                using (StreamReader …
Run Code Online (Sandbox Code Playgroud)

c# asp.net session-variables asp.net-mvc-4

3
推荐指数
1
解决办法
9267
查看次数

ASP.NET:单个应用程序中的多个Session对象

我有一个在Web服务器根目录运行的ASP.NET Web应用程序,它通过使用URL重定向提供多个(类似的)Web站点.举一个现实世界的例子:

http://webshopserver/company1/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company1
http://webshopserver/company2/ProductList.aspx -> http://webshopserver/ProductList.aspx?showProductsFrom=company2
...
Run Code Online (Sandbox Code Playgroud)

这很好用; 唯一的问题是,显然,所有这些不同的商店共享相同的会话对象(因为InProc会话管理器将会话对象存储在AppDomain中).我希望company1和company2的商店有不同的会话对象,例如,如果用户在同一浏览器窗口的不同选项卡中打开company1和company2的商店,则放入company1的购物车中的商品赢了不会出现在公司2的购物车中.

有一些明显的方法来解决这个我不喜欢的问题:

  • 创建我自己的Session对象,将所有内容封装到HashMap <CompanyName,无论是什么>中,然后将其存储在"真实"会话中:这会破坏使用会话对象的所有现有代码.
  • 使用http://company1.webshopserver/等URL 和通配符DNS记录,因为会话ID cookie与域绑定:这很丑陋(因为现实世界相当于"webshopserver"已经足够长了).
  • 编写我自己的自定义会话提供程序:这有点像重新发明轮子.
  • 为每家公司创建一个单独的IIS应用程序:无法工作,因为创建新公司应该可以通过http://webshopserver/CreateYourOwnWebshop.aspx之类的东西来实现,之后不需要任何人工(服务器管理员)干预.

我正在考虑更多的解决方案:

因此,任何有关如何实现这些要点之一的信息(或者可能完全不同的解决方案)都会有所帮助.

asp.net session

1
推荐指数
1
解决办法
2万
查看次数

课堂上的课程.我怎么才能访问?

我在我的项目中添加了一个类,当我输入会话时,它不会进入intelliscense.会话可以在课程中使用吗?

asp.net

1
推荐指数
1
解决办法
9103
查看次数