小编Dan*_*n P的帖子

在MS SQL Server中,有没有办法"原子地"递增用作计数器的列?

假设一个Read Committed Snapshot事务隔离设置,以下语句是"atomic",你不会"失去"并发增量吗?

update mytable set counter = counter + 1
Run Code Online (Sandbox Code Playgroud)

我假设在一般情况下,此更新语句是更大事务的一部分,它不会.例如,我认为这种情况是可能的:

  • 在事务#1中更新计数器
  • 在交易#1中做一些其他的事情
  • 使用事务#2更新计数器
  • 提交事务#2
  • 提交事务#1

在这种情况下,计数器最终只会增加1吗?如果这是交易中唯一的陈述,它会有所作为吗?

像stackoverflow这样的网站如何为其问题视图计数器处理这个问题?或者是否有可能"失去"一些被认为可接受的增量?

sql transactions sql-server-2005

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

在重定向中使用Asp.Net MVC TempData时是否存在可能的"竞争条件"?

当使用TempData时,我的理解是它会保留你所放置的任何内容,只需要一个请求.因此,当使用TempData在重定向中保留数据时(为了使用Post-Request-Get模式),用户的某些其他请求是否可能在发送重定向的响应和用户的浏览器请求重定向页面?在这种情况下,get将不再具有TempData可用,对吗?

现在,我明白发生这样的事情是非常罕见的,但考虑到用户可能在另一个选项卡中打开了另一个页面,并且可能在该页面上发生了ajax或定时回调请求,它突然没有对我来说似乎不可能.它通常被认为是太遥远而无法担心,还是我误解了什么?

编辑:更具体地说明我所询问的场景.

  1. 在选项卡1中,用户浏览具有帖子表单的页面
  2. 在选项卡2中,用户浏览到站点上的另一个页面,该页面在计时器上执行ajax回调
  3. 在选项卡1中,用户将表单发布到服务器
  4. 当服务器收到帖子时,它会在TempData中保存一些数据并发回重定向响应
  5. 在选项卡2中,发生定时ajax回调,向服务器发送GET请求.TempData将从会话中删除
  6. 在选项卡1中,浏览器接收重定向并发出GET请求
  7. 服务器处理GET请求并查找TempData,但它不再存在

asp.net asp.net-mvc redirect tempdata

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

如何让asp.net不自动转发URL中的转义斜杠?

使用像http://abc.com/myid/ab%2fcd这样的URL (其中%2f是转义斜杠),asp.net将从我的应用程序的角度(以及从asp.net mvc的角度来看)取消%2f )URL是:http://abc.com/myid/ab/cd

由于我的应用程序使用asp.net mvc,如果我想要指定类似"/ myid/{id}"的路由,这种行为很容易导致路由问题,因为asp.net的unescaping将导致该路由不匹配.

根据这个问题的答案:URL中的URL编码斜杠并根据这个msdn页面:http://msdn.microsoft.com/en-us/library/ee656542.aspx解决方案(在.Net 4.0中)是将以下内容放在web.config中:

<uri>
    <schemeSettings>
        <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/>
    </schemeSettings>
</uri>   
Run Code Online (Sandbox Code Playgroud)

但我实际上无法让它工作 - "%2f"仍然被自动转换为"/".有谁知道为什么配置设置可能不适合我,或有任何其他建议?

asp.net url asp.net-mvc escaping asp.net-mvc-routing

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