2009-07-17 3 views
3

Я написал ASP.NET HttpModule, и у меня есть статический вспомогательный класс, который используется для загрузки и хранения данных конфигурации в течение всего срока службы запроса.HttpModule и статический класс, выполняют ли несколько запросов одни и те же статические данные?

Поскольку статические конструкторы должны быть без параметров, у меня есть статический метод SetConfigName, который я вызываю в начале обработки HttpRequest.

public static void SetConfigName (string configName) 
    { 
     // load data specific to given configName 
    } 

Существуют также статические методы Get(), которые вызывается позже во время обработки HttpRequest.

Данные конфигурации, которые загружаются, могут быть разными для каждого запроса (на основе значений в URL-адресе), поэтому я делаю не хочу, чтобы другие запросы делили статические данные после вызова SetConfigName.

Итак, вопрос в том, выполняют ли несколько запросов одни и те же статические данные или каждый новый запрос получает отдельную копию статического класса? (А если данные передаются, как избежать этого? Это единственная альтернатива, чтобы сделать его не-статический класс?)

(Кстати, я не использую global.asax.)

ответ

1

Несколько запросов разделяют одни и те же статические данные. Единственный способ обойти это - всегда возвращать информацию на основе текущего запроса, а не просто возвращать сохраненные статические данные. Если это не вариант, то да, вам нужно сделать его нестационарным.

3

Статические данные разделяется между запросами. Чтобы сохранить статические данные для 1 запроса, вы должны использовать HttpContext.Current.Items.

 Смежные вопросы

  • Нет связанных вопросов^_^