Один экземпляр класса на HTTP-запрос - PullRequest
9 голосов
/ 23 ноября 2011

Для отладки моего приложения ASP.NET я создал класс с именем MessageHandling.cs.На данный момент это одноэлементный шаблон, но я хочу, чтобы он был экземпляром для каждого запроса.

Мой mssqlDb класс заполняет класс MessagesHandling сообщениями типа: 'Db connected', 'Data вставлен' и прочеекак это.После обработки всех событий страницы apsx класс MessageHandling читается createFile.apsx.cs в событии Page_LoadComplete().Все ошибки и сообщения будут показаны пользователю.

На этом этапе система работает для отладки.Проблема в том, что MessageHandling не очищается после отправки запроса, и ошибки также отображаются во втором браузере без каких-либо действий.Я также хочу иметь возможность использовать эту систему для показа сообщений конечным пользователям, например: «Блог создан».

Основой моей проблемы является следующее:Class A создает Class BClass C читает Class B

Синглтон не работает, потому что он не для пользователя / сеанса / запроса.Поэтому мне нужен другой метод.

Ответы [ 3 ]

17 голосов
/ 23 ноября 2011

Сохраните его в HttpContext.Items, таким образом, это будет для каждого запроса.

HttpContext.Items - кэш-хранилище по запросу

4 голосов
/ 23 ноября 2011

HttpContext.Current - это объект HttpContext для текущего запроса.Он имеет свойство Items, которое равно IDictionary от object до object.Вы можете поместить туда все что угодно, и оно будет привязано к текущему запросу.

0 голосов
/ 23 ноября 2011

Можете ли вы проверить конструктор вашего синглтона, чтобы увидеть, существует ли этот объект в сеансе? Если нет, то создать его, а затем вернуть?

private Singleton()
{
    // do whatever
}

public Singleton GetMySingleton()
{
    if(HttpContext.Current.Items["MyCustomSingleton"] == null)
        HttpContext.Current.Items["MyCustomSingleton"] = new Singleton();
    //

    return (Singleton)HttpContext.Current.Items["MyCustomSingleton"];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...