ASP.NET C # Статические переменные являются глобальными?

Сегодня я выпустил небольшое бета-приложение asp.net, которое позволяет внутреннему персоналу изменять некоторую информацию о продукте. Мы начали сталкиваться с проблемами, когда пользователи перезаписывали информацию о продукте друг друга ... даже при том, что каждый сотрудник редактировал совершенно другую строку (Продукт).

После некоторых поисков в Google, я думаю, что я знаю, что происходит, это связано с использованием статических переменных, ниже приведен краткий пример проблемы:

// EditProductGroup.aspx.cs
public partial class EditProductGroup : System.Web.UI.Page
{

    private static int _groupId = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
      _groupId = Convert.ToInt16(Request.QueryString["GroupID"]);

     // get existing ProductGroup information from database using 
     //_groupId to find the row and populate textboxes
    }

    private void saveProductGroupData()
    {
      // when user hits 'save changes' button, update row 
      //where the primary key column 'ProductGroupID' matches _groupId in the table
    }
}

Итак, согласно моим исследованиям, статическая переменная фактически существует для приложения в целом, это означает, что если несколько пользователей используют приложение, они все будут фактически читать одно и то же ».значение' за '_groupId» и в некоторых случаях фактически устанавливает его на другое значение, вызываяпример' страницы, чтобы сохранить данные в неправильную строку (ProductGroupId).

Мое намерение состояло в том, чтобы статическая переменная была изолирована от других пользователей и не должна мешать - у каждого пользователя есть свой экземпляр страницы, таким образом, свой экземпляр '_groupId» переменная.

К счастью, все это происходило в базе данных dev / staging, а не в живой базе данных. Я'я не уверен, нужно ли мне просто высадитьстатический» ключевое слово, чтобы остановить переменную, устанавливаемую / читаемую всеми.

Какие-нибудь мысли? Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос