在asp.net中使用static是否安全?
情况如下:
后面的代码中的计数器在每个forLoop上向用户报告
这样:
<div id="report"></div>
将通过jquery ajax设置,因为如果我要添加runat="Server"
它将不会显示,直到所有迭代都会发生。
所以使用jquery来分解[Webmethod]
是我在运行时能够更新内容的唯一方法
所以问题是10个用户是否会同时触发webmethod
static int result=someStaticMethodRandomOutput();
[webmethod]
static void StatMet(object userInput){
return result + intValue() * Convert.ToInt32(userInput);
}
static int intValue(){
static int someCalculation=someOtherStaticValFromOtherMethodToReturn;
return someClaculation;
}
在客户端,jQueryAjax将显示返回的值...
现在是否所有或部分用户都会共享返回值或结果值或某些值?
答案 0 :(得分:1)
ASP.NET AJAX页面方法必须是static
。我认为在处理static
,特别是static
字段时,从来没有任何安全措施是安全的(双关语)。
答案 1 :(得分:1)
result
是一个静态字段,确实在所有调用之间共享 - 这意味着在asp.net等多线程环境中,运行时的结果可能非常不可靠。尽管如此,它在字段初始化程序中初始化并且似乎不会被更改,因此您可能会侥幸逃脱它。如果无法更改,请添加readonly
以使其显而易见;如果它可以改变,这是一个很大的问题。
someCalculation
没有意义 - 在C#中没有static
局部变量,它不会编译。