Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当通过重定向使用Asp.Net MVC TempData时,是否存在可能的“竞争条件”?

当通过重定向使用Asp.Net MVC TempData时,是否存在可能的“竞争条件”?
EN

Stack Overflow用户
提问于 2008-10-24 16:10:27
回答 4查看 3.1K关注 0票数 16

在使用TempData时,我的理解是它只会为一个请求保留您放在其中的所有内容。因此,当使用TempData跨重定向保留数据时(为了使用Post- request -Get模式),在发送重定向的响应和请求重定向页面的用户浏览器之间,来自用户的一些其他请求不可能进入服务器吗?在哪种情况下,get将不再有可用的TempData,对吗?

现在,我知道这种情况很少发生,但考虑到用户可能会在另一个选项卡中打开另一个页面,并且该页面上可能会发生ajax或timed回调请求,所以对我来说,这似乎并不是那么不可能。这是不是通常被认为太遥远而不值得担心,或者是我误解了什么?

编辑:更具体地说,关于我所询问的场景。

  1. 在Tab 1中用户浏览到具有Tab 2中的post form
  2. 的页面用户浏览器到站点上的另一个页面,该页面在tab 1中的timer
  3. 上执行ajax回调,用户将表单发布到服务器
  4. 当服务器收到post时,它将一些数据保存在TempData中并发回重定向响应

<>H19在Tab 2中,计时ajax回调发生,向服务器发送GET请求。TempData将从选项卡1中的session

  1. 中删除,浏览器收到重定向并发出GET请求
  2. 服务器处理GET请求并查找TempData,但它不再存在
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-10-24 18:31:02

好的,浏览ASP.NET MVC代码可以看到,虽然TempData存储在会话中,但在加载时,它会从会话中删除。并将其加载到控制器的ExecuteCore()方法中。

因此,我认为这将意味着是的,您完全可以遇到来自不同浏览器选项卡的请求可能导致此问题的竞争条件(您有一个非常好的示例)。但这将取决于每个浏览器处理请求的模型。浏览器可能会将所有请求序列化到同一服务器,以便一次只执行一个请求。但实际上,他们不会这么做,他们会将其限制在最大值,即(我认为)对同一服务器的5个并发请求。

鉴于ASP.NET MVC站点可以是对任何浏览器(毕竟是web :)的服务请求,这是一个真实的场景,尽管如您所说,这可能是一个罕见的场景。

票数 9
EN

Stack Overflow用户

发布于 2008-10-26 16:43:23

在使用TempData时,完全有可能出现竞争条件。然而,在正常使用的情况下,你当然必须“倒霉”。为了遇到竞争条件,必须满足以下所有条件:

  1. 您必须首先使用TempData。
  2. 您必须打开多个浏览器窗口/选项卡/任何内容,并共享同一浏览器会话。
  3. 来自第二个浏览器选项卡的请求必须在第一个浏览器选项卡的请求和响应之间“潜入”。

请注意,第2项在很大程度上取决于您使用的浏览器。根据IE的设置,打开多个窗口并不意味着它们共享浏览器cookies,因此它们不一定共享会话(基于cookies)。

但是,如果遇到某个东西就会爆炸,这就不存在竞争条件了。这可能就是Haacked所指的。但是,您可以在某种意义上达到竞争条件,即您在一个请求中设置了一些TempData,然后在您认为将获得它的下一个请求中没有得到它。它只会是空的。

谢谢,Eilon

票数 4
EN

Stack Overflow用户

发布于 2008-10-24 16:42:07

TempData使用了Session对象AFAIK,它不会遇到这个问题。你在这方面遇到过什么特殊的问题吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/235665

复制
相关文章
Bootstrap- Modal对话框如何在关闭时触发事件
下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。 事件 描述 实例 show.bs.modal 在调用 show 方法后触发。 $('#identifier').on('show.bs.modal', function () { // 执行一些动作... }) shown.bs.modal 当模态框对用户可见时触发(将等待 CSS 过渡效果完成)。 $('#identifier').on('shown.bs.modal', function () { // 执行一些动作... }) hide
johnhuster的分享
2022/03/28
2K0
如何在 Web 关闭页面时发送 Ajax 请求
有时候我们需要在用户离开页面的时候,做一些上报来记录用户行为。又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作。
grain先森
2019/05/10
3.3K0
如何在 Web 关闭页面时发送 Ajax 请求
关闭对话框,OnClose和OnCancel
我们知道,在对话框中,屏蔽ESC键自己主动退出能够选择重载OnCancel为哑函数的方法:
全栈程序员站长
2022/07/12
1.1K0
QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent
建了一个对话框,我不想把边框去掉,只想去掉关闭按钮, setWindowFlags(windowFlags()&~Qt::WindowCloseButtonHint&~Qt::WindowContextHelpButtonHint); 结果那个问号的按钮去掉了,但是关闭按钮还在,求助啊
bear_fish
2018/09/20
7.4K0
linux下如何完全删除用户
转载:http://blog.51cto.com/wutengfei/1923446
全栈程序员站长
2022/09/05
8.2K0
删除/关闭Word文稿中的插件
每次打开word时会默认选中某个软件的插件,导致效率降低;或者因为某个插件不常用等等原因,需要删除/关闭插件,本文以关闭经常弹出的WPS插件为例。
timerring
2022/07/20
8.3K0
删除/关闭Word文稿中的插件
如何在 Ubuntu 上完全卸载 Java?
Java是一种广泛使用的编程语言和平台,但在某些情况下,您可能需要在Ubuntu系统上完全卸载Java。本文将详细介绍如何在Ubuntu上卸载Java,并清理与Java相关的文件和配置。
网络技术联盟站
2023/06/20
1.6K0
如何在 Ubuntu 上完全卸载 Java?
如何在Ubuntu中完全移除Snap
我曾经写过一篇文章,解释过为什么Snap是不受欢迎的,简而言之的话,主要原因在于:
御剑
2022/11/18
16.6K0
如何在Ubuntu中完全移除Snap
如何在 Bash Shell 脚本中显示对话框
这个教程给出几个如何使用类似zenity和whiptail的工具在Bash Shell 脚本中提供消息/对话框的例子。使用这些工具,你的脚本能够告知用户当前程序运行的状态并能与用户进行交互。这两个工具的不同之处在于显示消息框或者对话框的方式。Zenity用GTK工具包创建图形用户界面,而whiptail则在终端窗口内创建消息框。
哲洛不闹
2018/09/14
2.7K0
如何在 Bash Shell 脚本中显示对话框
outlook关闭时最小化工具
outlook本身不能支持设置点击关闭按钮时最小化,而是直接退出。 需要借助一个加载项实现: Keep Outlook Running。
编程随笔
2019/09/11
3.9K0
outlook关闭时最小化工具
python测试开发django-187.Bootstrap模态框(modal)如何在关闭时触发事件
前言 Bootstrap 模态框 (modal) 在关闭时,如何触发一些事件?比如重置表单,或者重置表单的校验。 Bootstrap 模态框 (modal) 提供了4个显示和隐藏模态框的事件。这些事件
上海-悠悠
2022/01/10
1.4K0
python测试开发django-187.Bootstrap模态框(modal)如何在关闭时触发事件
关闭Outlook时最小化 dll
用Outlook时最让我感觉不爽的就是不小心点了关闭按钮就会把Outlook关闭。 我们用软件的时候都希望软件有一个关闭时最小化功能,更希望Outlook也有这个功能 但让我很失望的是把设置里看了一个
lpxxn
2018/01/31
1.4K0
关闭Outlook时最小化 dll
如何在Python中删除(删除)文件和目录
本教程说明了如何使用os,pathlib和shutil模块中的功能删除文件和目录。
用户5005176
2021/08/10
13.1K0
WordPress删除文章时自动删除图片附件
WordPress删除文章时,文章内所上传到媒体库的图片等附件不会自动删除,占用了网站空间,因此下面说明通过几行代码的简单方式实现在删除文章时自动删除缩略图以及图片附件,这样就不用手动去媒体库寻找并删除,准确而且效率高。
你的明明呐丶
2022/06/27
8510
docker一键启动、关闭、删除命令
一键启动所有docker 容器:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
全栈程序员站长
2022/06/29
1.3K0
一键式完全删除CDH 6.3.1
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户1148526
2019/11/12
3.2K0
如何在项目中优化的展示对话框?
对话框在前端开发应用中,是一种非常常用的界面模式。对话框作为一个独立的窗口,常常被用于信息的展示,输入信息,亦或者更多其他功能。但是项目的使用过程中,在某些场景下对话框用起来会有一些麻烦。例如:
科技新语
2022/05/12
3320
删除或关闭Word中的超链接
最近使用的word老是会把一些文字内容或者标题转换成乱七八糟的格式,看的莫名其妙的,找了好久也不知道什么问题,后来一查才知道是因为这些文字包含超链接,word自动转换了。。。你说是不是莫名其妙。
marsggbo
2019/05/26
2.6K0
docker一键启动、关闭、删除命令
一键启动所有docker 容器:docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
互联网-小阿宇
2022/11/21
8630
如何在docker中删除images
本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/90/
羽翰尘
2019/11/20
2.5K0

相似问题

颤动对话框未完全关闭

316

无法完全关闭警报对话框

11

如何在jQuery UI对话框关闭时将其全部删除

50

如何知道对话框是否完全关闭?

27

完全隐藏with对话框而不关闭

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文