asp.net-mvc – 在MVC 3中写入只读会话
|
我遇到了一个好奇的ASP会话的行为。你可以强制控制器超出用户的会话 – 我想能够这样做,使多个请求可以同时执行,并使用会话使它们连续执行。 禁用会话状态按预期工作: [SessionState(SessionStateBehavior.Disabled)]
public class SampleController : Controller
{
public ActionResult Test()
{
// Access to the session should be denied
object test = Session["test"];
return Content(test);
}
}
到/ Sample / Test会抛出一个System.Web.HttpException异常。 [SessionState(SessionStateBehavior.ReadOnly)]
public class SampleController : Controller
{
public ActionResult Test()
{
// Read from the session should be fine
object test = Session["test"];
return Content(test);
}
public ActionResult SetTest(string value)
{
// Write to the session should fail
Session["test"] = value;
// Read it back from the session
object test = Session["test"];
return Content(test);
}
}
所以现在我期望/ Sample / Test工作,而且它。奇怪的是,集合也是:我去/ Sample / SetTest?value = foo,它不抛出异常,实际上它返回“foo”。如果我调用/ Sample / SetTest?value = bar,然后/ Sample / Test我得到“bar”,表示会话已经写入。 所以在SessionStateBehavior.ReadOnly我已经成功写入会话并读取我的值。 我认为这可能是由于三件事之一: >在MVC 3 [SessionState(SessionStateBehavior.ReadOnly)]被打破/忽略。 任何人都可以确认? 我怀疑最后一个是真的,基于custom session provider documentation – 如果这是怎么实现的工作?写入“只读”会话是否会产生并发错误(即最后写入胜利),还是会导致会话损坏和异常中断? 更新 看起来这是设计(从Microsoft’s docs):
看起来像上面的第二个选项是它实际上做的 – 会话被锁定和模式更改为可写。 解决方法/ Sample / SetTest?value = foo是的,它不会抛出任何错误,但它也没有持续会话在请求结束。通过设计,您写入会话的任何事情都会在请求生命周期的最后更新(只有会话是可写的)。 在我的测试/ Sample / Test什么都不返回。 我认为他们应该在这里失败,当会议是readonly。 顺便说一下,你的样品需要重写 string test = (string)this.Session["test"]; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET主题图像
- asp.net-mvc – Bower,Grunt和Yeoman如何适应Visual Studio
- asp.net-mvc – 从MVC Controller导出到CSV,View在页面上显
- asp.net-mvc – Razor MVC模型正在丢失保存操作的数据
- 什么是asp.net会话超时的单位?
- 在ASP.NET Web应用程序中有未处理的异常是否可以接受?
- asp.net-mvc-3 – DTO可以嵌套DTO吗?
- asp.net-web-api – 如何从Web API获取IObservable
- 在asp.net-mvc中,在不影响其他用户的情况下执行昂贵操作的正
- asp.net-mvc – {get;组; }在ViewModel中使用
- asp.net – 在Web.config更改后程序集不可用
- asp.net – CSS压缩和组合/ js缩小 – 在运行时或
- asp.net – 为什么不调用我的IHttpHandler?
- asp.net-mvc-3 – ASP.NET MVC 3和App_Code文件夹
- asp.net – HttpPostedFileBase.SaveAs方法问题
- 在ASP.NET MVC2创建方法中使用FormCollection的正
- asp.net-mvc – 通用列表属性的必需属性
- 序列化 – Newtonsoft中的TypeNameHandling需要$
- asp.net-mvc – 验证asp.net MVC中的只读输入不显
- asp.net – 渗透测试人员说.ASPXAUTH cookie是不
