0

在 asp.net 中使用静态是否安全?

情况是这样的:

后面代码中的计数器在每个 forLoop 上向用户报告

所以:

<div id="report"></div> 

将通过 jquery ajax 设置,因为如果我添加runat="Server" 它,它不会显示,直到所有迭代都发生。

所以使用 jquery 触发 a[Webmethod]是我能想出的在运行时更新 div 内容的唯一方法

所以问题是 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 将显示返回的值...

现在返回值或结果值或此处的某些值是否会被所有或部分用户共享?

4

2 回答 2

1

ASP.NET AJAX 页面方法必须是static. 我认为可以安全(双关语)说处理 . 时没有任何安全的东西static,尤其是static字段。

于 2013-06-28T20:58:12.717 回答
1

result是一个静态字段,并且确实在所有调用之间共享 - 这意味着运行时的结果在像 asp.net 这样的多线程环境中可能非常不可靠;虽然这么说,但它是在字段初始化程序中初始化的,并且似乎没有改变,所以你可能会侥幸逃脱。如果无法更改,请添加readonly以使其明显;如果它可以改变,这是一个巨大的问题。

someCalculation没有意义 - staticC# 中没有局部变量这样的东西,它不会编译。

于 2013-06-28T20:59:01.600 回答