Tag: 会话状态

在asp.net中序列化会话状态

我正在尝试在我们的nopcommerce 1.9安装中将会话状态存储在SQL而不是InProc中。 当我对web.config进行必要的更改时,我收到此错误: ‘/’应用程序中的服务器错误。 无法序列化会话状态。 在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。 如果自定义会话状态存储在“自定义”模式下执行类似的序列化,则适用相同的限制。 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.Web.HttpException:无法序列化会话状态。 在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。 如果自定义会话状态存储在“自定义”模式下执行类似的序列化,则适用相同的限制。 来源错误: 在执行当前Web请求期间生成了未处理的exception。 可以使用下面的exception堆栈跟踪来识别有关exception的起源和位置的信息。 堆栈跟踪: [SerializationException:在程序集’Nop.BusinessLogic中输入’NopSolutions.NopCommerce.BusinessLogic.Categories.Category’,Version = 1.9.0.0,Culture = neutral,PublicKeyToken = null’未标记为可序列化。 System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)+9449041 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type,StreamingContext context)+247 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()+160 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType,ISurrogateSelector surrogateSelector,StreamingContext context,SerObjectInfoInit serObjectInfoInit,IFormatterConverter converter,SerializationBinder binder)+ 371 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteArray(WriteObjectInfo objectInfo,NameInfo memberNameInfo,WriteObjectInfo memberObjectInfo)+205 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo,NameInfo memberNameInfo,NameInfo typeNameInfo)+651 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph,Header [] inHeaders,__BinaryWriter serWriter,Boolean fCheck)+444 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,Object graph, Header […]

这个“单例”应该在ASP.NET应用程序中是线程安全的吗?

请注意,“singleton”在稍微不常见的意义上使用 – “对象像HttpContext.Current一样可见”,与普通的“具有一个共享实例的对象”不同。 我为我的asp.net MVC应用程序使用单例类型的UserContext类。 此类允许我将用户数据存储为强类型会话对象。 我遇到了这个CodeReview问题,并想知道是否有必要关注此应用程序上下文中的线程安全性。 这是我的代码的简化: public class UserContext { private UserContext() { } public static UserContext Current { get { if (HttpContext.Current.Session[“UserContext”] == null) BuildUserContext(); return (UserContext)HttpContext.Current.Session[“UserContext”]; } } private static void BuildUserContext() { if (!user.Identity.IsAuthenticated) return; var uc = new UserContext { IsAuthenticated = true }; // …snip… // Set up […]

如何防止会话超时

我知道这对你们大多数人来说可能是一个简单的问题。 但我的问题是我的服务器主机每分钟都清空会话池。 那么如何让我的用户保持登录超过一分钟? 我听说我可以使用SessionStates,但是我没有在网上找到任何像我这样的新手很容易使用的指南。 我也听说过用cookies做这件事。 怎么样? 我正在使用C#和.Net

更改ASP.NET的会话状态cookie的到期日期

我正在使用ASP.NET会话状态来跟踪我的网站上登录的用户。 但是,我遇到的一个问题是,默认情况下,ASP.NET会话cookie在浏览器关闭时设置为过期。 http://ahb.me/43e 我尝试使用类似于以下代码的东西设置我自己的ASP.NET_SessionId cookie并修改cookie的到期时间: Response.Cookies[“ASP.NET_SessionId”].Expires = DateTime.Now.AddMonths(1); 这些方法都不起作用,它们都设置了第二个具有相同名称的cookie。 有没有办法改变会话cookie的到期日期?

是否可以使用编译时检查类型是否使用Serializable属性进行标记

具体来说,我们使我们的应用程序与Out Of Process会话状态服务器兼容,其中会话中保存的所有类型都必须是可序列化的。 有没有办法在编译时看到放入HttpSessionState的任何类型都标有Seri​​alizable属性。 这个“无效”代码的一些东西 public static void Put( string key, T value ) where T : IsMarkedWitheSerializableAttribute { HttpContext.Current.Session[key] = value; }

在Asp.net中每个用户只能进行一次并发登录

是否可以在Asp.Net Web应用程序中仅允许每个用户进行一次并发登录? 我正在开发一个Web应用程序,我希望确保该网站每个用户一次只能登录一次。 如何检查当前用户是否已登录。 建议正确的登录方法,我们可以通过它来处理这个问题 我认为我们应该使用sql server session state来处理这个问题。 你的建议是什么? 我想到了一个解决方案。 我不知道它是否合适。 我们可以这样做: 当用户登录系统时,我们在用户列中插入会话ID。 (我们将使用数据库会话,以便我们可以轻松获取所有与会话相关的数据,如isexpired,expiredatetime等)。 当同一用户尝试第二次登录时,我们将检查该会话ID列并检查该会话是否已过期。 如果会话未过期,我们将不允许用户登录。 每次用户注销时更新用户会话ID。 请以正确的方式建议。

使用SQL Server在两个ASP.NET应用程序之间共享会话状态

我正在开发一个网站,该网站需要在同一个域上的cms应用程序和在线商店应用程序之间共享会话,例如。 mydomain.com 和 store.mydomain.com 我已经取得了一些进展,它适用于我之间的本地构建 localhost/cms 和 localhost/store 基本上我已经完成了本文的建议 http://blogs.msdn.com/toddca/archive/2007/01/25/sharing-asp-net-session-state-across-applications.aspx 并攻击TempGetAppID存储过程以返回相同的应用程序ID(1)。 这似乎有效,因为它创建了像’abv5d2urx1asscfwuzw3wp4500000001’这样的ID,这是我所期望的。 我的问题是,当我将它部署到我们的测试环境时,它会在我在两个站点之间导航时创建一个新会话。 所以当我在cms网站上开始会话时,如果我导航到商店,它会创建一个新会话。 这些在IIS7中设置为2个不同的网站。 在两个站点的web.config文件中,和元素都相同,如下所示(减去敏感信息) 有没有人知道为什么这可能不起作用? 我正在两个站点共享表单身份validation,并且工作正常。 任何帮助或想法将不胜感激! 非常感谢 戴夫

在共享同一会话时处理另一个Web应用程序时阻止Web应用程序

在IIS中部署了两个WebApplications,即/ HRMS,/ TravelDesk。 两个WebApp都通过AspState共享会话,配置信息是 用户登录/ HRMS应用程序,从导航到新窗口的TravelDesk应用程序,会话将在两个Web应用程序之间共享。 在TravelDesk应用程序中,用户正在尝试上传大量信息,并且在服务器中处理请求需要更多时间。 同时我试图访问/ HRMS应用程序,但在TravelDesk执行完成之前它没有响应? 会话会锁定SQLServer吗? 请指导我解决此问题。