Каковы За и против использования Global.asax? [закрытый]

добавлено

body {
 overflow: hidden;
}

html,
body {
  margin: 0;
  height: 100%;
}

html {
  display: table;
}

body {
  background-color: #0000ff;
  display: table-row;
  overflow: hidden;
}

aside {
  background-color: #00ff00;
  display: table-cell;
}

header {
  background-color: #909090;
}

main {
  background-color: #ffffff;
  height: 100%;
}
<html>
  <body>
    <aside>ASIDE</aside>
    <header>HEADER<br>AND SOME CONTENT</header>
    <main>MAIN</main>
  </body>
</html>

7
задан Bill the Lizard 8 August 2012 в 19:40
поделиться

10 ответов

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

3
ответ дан 6 December 2019 в 19:44
поделиться

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

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

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

3
ответ дан 6 December 2019 в 19:44
поделиться

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

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

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

2
ответ дан 6 December 2019 в 19:44
поделиться

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

1
ответ дан 6 December 2019 в 19:44
поделиться

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

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

0
ответ дан 6 December 2019 в 19:44
поделиться

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

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

0
ответ дан 6 December 2019 в 19:44
поделиться
  • Инициализация ASP.NET MVC.:)
  • Пользовательская аутентификация пользователя.
  • Внедрение зависимости, как расширение Ninject HttpApplication.
2
ответ дан 6 December 2019 в 19:44
поделиться

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

0
ответ дан 6 December 2019 в 19:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: