2008-09-25 4 views

ответ

3

Это прост в использовании, если ваш код инициализации сеанса и приложения очень мал и зависит от приложения. Использование HttpModule более полезно, если вы хотите повторно использовать код, например, настроить правила для перезаписи URL-адресов, перенаправления или авторизации. HttpModule может охватывать все, что может сделать файл Global.asax. Их также можно легко удалить и добавить с помощью .config.

3

Я использовал его раньше, чтобы поймать ошибки на уровне приложения и сделать что-то, когда истекает срок действия пользователя.

Я также часто использую его для предоставления статических свойств, которые считывают значения из web.config.

Я думаю, что это нормально для таких вещей, хотя я бы не стал гораздо больше, чем там.

0

Global.asax может наследовать от вашего собственного класса, который наследует httpapplication. Дает вам больше опций, а также добавляет основную часть кода, который может иметь глобальный в библиотеку классов.

EDIT: Наличие вашего класса HttpApplication (parent.asax parent) в отдельной библиотеке классов также может способствовать повторному использованию. Хотя я согласен с тем, что использование HttpModules лучше подходит для многих задач, но у этого все еще есть много применений, для одного, более чистого кода.

0

Я действительно не использовал Global.asax. Я использовал его эквивалентно в классическом ASP все время, но это в основном связано с определенными конфигурациями, такими как строки подключения к базе данных и т. Д. Конфигурация в .net делает многое из этого намного проще.

Но если вы хотите реализовать события приложения и уровня сеанса, это то, куда вам нужно идти.

1

Это прекрасное место, чтобы захватить начало сеанса и даже запросить инициирование. Другие упоминали об аспекте обработки ошибок, хотя будьте осторожны с исключениями, вызванными потоками nonasp.net (например, threadpool или пользовательским потоком), поскольку они будут обходить обработчик global.asax. Лично у меня всегда есть один, я думаю, что это просто часть сантехники.

2
  • Инициализация ASP.NET MVC. :)
  • Пользовательская аутентификация пользователя.
  • Зависимость впрыска, как удлинение Ninject HttpApplication.
1

Раньше я использовал Global.asax для таких вещей, как обработка ошибок и т. Д., Однако я с тех пор перешел на использование HttpModules, чтобы заменить это, поскольку я могу скопировать его из одного проекта в другой без редактирования global.asax.

2

Его жесткий напиток, просто будьте осторожны, чтобы не пить слишком много, и все будет хорошо.

Я использую его для обработки глобальных ошибок и настройки маршрутов в mvc. Однако вы не хотите писать глобальный код page_init.

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

1

Кон с использованием Global.asax по сравнению с HttpModule: у вас возникнет соблазн написать код, который трудно использовать, потому что он будет слишком привязан к конкретному приложению.

0

Событие Session_Start в Global.asax является злым хорошим местом для инициализации переменных сеанса.

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