标签: session-state

使用ASP.NET会话状态服务跨应用程序共享会话

我正在尝试在两个Web应用程序之间共享会话,这两个Web应用程序都托管在同一台服 一个是.net 2.0 Web表单应用程序,另一个是.net 3.5 MVC2应用程序.

两个应用程序的会话都设置如下:

<sessionState
      mode="StateServer"
      stateConnectionString="tcpip=127.0.0.1:42424"
      />
Run Code Online (Sandbox Code Playgroud)

在webform应用程序中,我将会话密钥发布到MVC应用程序:

protected void LinkButton1_Click(object sender, EventArgs e)
{
    Session["myvariable"] = "dan"; 
    string sessionKey = HttpContext.Current.Session.SessionID;

    //Followed by some code that posts sessionKey to the other application    
}
Run Code Online (Sandbox Code Playgroud)

然后我在MVC应用程序中接收它并尝试使用相同的会话,如下所示:

[HttpPost]
public  void Recieve(string sessionKey )
{
    var manager = new SessionIDManager();

    bool redirected;
    bool IsAdded;

     manager.SaveSessionID(HttpContext.ApplicationInstance.Context, Id, out redirected, out IsAdded);
     var myVar = Session["myvariable"];

}
Run Code Online (Sandbox Code Playgroud)

密钥正在发布但会话似乎没有加载到MVC应用程序中,即sessionKey为null.可以做我想做的事吗?

c# asp.net asp.net-mvc session-state

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

ASP.NET:如何从处理程序访问Session?

我正在尝试一些值存储在会话处理程序页面,我做一个重定向到一个页面的WebForms,这将拿起之前会话值和预填的WebForm:

public class Handler : IHttpHandler
{
   public void ProcessRequest(HttpContext context)
   {
      ...
      context.Session["StackOverflow"] = "overflowing";
      context.Response.Redirect("~/AnotherPage.aspx");
      ...
   }
   ...
 }
Run Code Online (Sandbox Code Playgroud)

除了context.Sessionobject是null.

如何从处理程序访问会话状态?

asp.net session session-state handler ihttphandler

47
推荐指数
3
解决办法
4万
查看次数

在ASP.Net MVC中禁用每个请求的会话状态

我在ASP.Net MVC中创建一个ActionResult来提供图像.启用会话状态后,IIS将一次只处理来自同一用户的一个请求.(这不仅适用于MVC.)

因此,在具有多个图像回调此Action的页面上,一次只能处理一个图像请求.这是同步的.

我希望这个图像Action是异步的 - 我希望每次执行多个图像请求而不需要前一个完成.(如果图像只是静态文件,IIS会以这种方式为它们提供服务.)

所以,我想禁用Session仅用于对该Action的调用,或者指定某些请求没有Session状态.任何人都知道如何在MVC中完成这项工作?谢谢!

asp.net asp.net-mvc asynchronous session-state actionresult

46
推荐指数
5
解决办法
3万
查看次数

完全取代ASP.Net的会话

ASP.Net会话看起来非常适合传统的WebForms应用程序,但它们会为现代AJAX和MVC应用程序做一些严重问题.

具体来说,只有3种方法可以访问ASP.Net提供者:

  1. 锁定读写(默认) - 会话被锁定,AcquireRequestState直到ReleaseRequestState触发为止.如果浏览器立即发出3个请求,他们将在服务器上排队.这是MVC 2中唯一的选择,但MVC 3允许......

  2. 非锁定只读 - 会话未锁定,但无法保存.这似乎是不可靠的,因为有些读取似乎再次锁定会话.

  3. 会话已禁用 - 任何读取或写入会话的尝试都会引发异常.

然而,对于一个现代的MVC应用程序,我有很多AJAX事件同时发生 - 我不希望它们在服务器上的队列,但我希望他们能够写入会话.

我想要的是第四种模式:脏读,最后写赢

我认为(很高兴得到纠正)唯一的办法就是完全取代ASP.Net的会话.我可以编写自己的提供程序,但ASP仍会使用它支持的3个模式中的一个调用它.有没有办法让ASP.Net支持乐观并发?

这使得我用一个基本上做同样事情的新类替换对会话的所有调用,但是没有锁定 - 这是一个痛苦.

我希望保留尽可能多的当前会话内容(最重要的是在各种日志中的会话ID),并且代码更换量最少.有没有办法做到这一点?理想情况下,我想HttpContext.Current.Session指向我的新类,但没有ASP.Net锁定任何请求.

有没有人做过这样的事情?看来奇怪的是,所有的AJAXey MVC应用程序都是ASP的一个新问题.

asp.net concurrency session session-state

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

列出所有活动的ASP.NET会话

如何列出(并遍历)所有当前的ASP.NET会话?

asp.net session session-state

44
推荐指数
5
解决办法
6万
查看次数

如何检查用户是否在php中登录?

我是php的新手,我正在试图弄清楚如何使用会话检查并查看用户是否登录到网站,以便他们有权访问特定页面.

这是一件复杂的事情,还是因为我是一个无法理解的菜鸟?

谢谢您的帮助!

php session login session-state

44
推荐指数
4
解决办法
17万
查看次数

Session.Clear()与Session.RemoveAll()

有没有之间的差异Session.Clear()Session.RemoveAll()

描述和文档页面似乎完全相同,但我假设必须有一些创建两个函数的原因,我是对的吗?

c# asp.net session-state

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

如何从Redis保存和检索会话

我正在尝试将Redis会话集成到我用Node.js编写的身份验证系统中.

我已经能够成功设置Redis服务器connect-redis和Express服务器.

这是我的设置(只是重要的一点):

var express = require("express");
var RedisStore = require("connect-redis")(express);
var redis = require("redis").createClient();

app.use(express.cookieParser());
app.use(express.session({
    secret: "thisismysecretkey",
    store: new RedisStore({ host: 'localhost', port: 6379, client: redis })
}));
Run Code Online (Sandbox Code Playgroud)

现在......我如何实际创建,阅读和销毁会话?我已经阅读了大量关于如何设置的文章connect-redis和关于SO的许多问题,但我发誓每一个都停在配置上,并没有解释如何实际使用它...

我知道这可能非常简单,但请不要downvote,只是解释:).

session-state redis node.js

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

为什么Session是ASP.NET MVC应用程序中的灾难?

为什么说我们不应该在ASP.NET MVC应用程序中使用Session变量?我偶然发现了这个答案.在这种情况下,我将如何维护诸如登录用户信息和与其帐户相关的一些相关数据等请求的值?

这是达林的回答.

为什么在ASP.NET MVC应用程序中使用HttpContext.Current?永远不要使用它.即使在经典的ASP.NET webforms应用程序中,这也是邪恶的,但在ASP.NET MVC中,这是一个让这个漂亮的Web框架带来所有乐趣的灾难.

session-state asp.net-mvc-3

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

当同一用户ID尝试登录多台设备时,如何终止其他设备上的会话?

我想要做的是将用户ID限制为只能一次登录到一个设备.例如,用户ID"abc"登录到他们的计算机.用户ID"abc"现在尝试从手机登录.我想要发生的是在他们的计算机上杀死会话.

Spotify应用就是这样做的 - Spotify只允许一个用户ID一次登录到一个设备上.

我正在使用ASP.NET成员资格(SqlMembershipProvider)和表单身份验证.

我已尝试使用Session变量,但我不确定从何处开始.

c# asp.net-membership session-state sqlmembershipprovider asp.net-mvc-4

33
推荐指数
3
解决办法
5万
查看次数