Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
{
НЕ нашли? Не то? Что вы ищете?
AreaRegistration. RegisterAllAreas()
Рис. 10 Включение TableStorageTraceListener в файле конфигурации Теперь определите параметр конфигурации, который будет управлять записью диагностических данных в журнал, выполняемой с помощью TableStorageTraceListener. Чтобы создать этот параметр, разверните узел «Роли» в проекте FabrikamInsuranceService, а затем дважды щелкните роль FabrikamInsurance. В окне свойств роли перейдите на страницу Параметры, щелкните Добавить параметр, а затем задайте новому параметру имя EnableTableStorageTraceListener, в качестве типа укажите String, а в качестве значения Ї false.
Рис. 11 Создание параметра конфигурации для включения прослушивателя трассировки Найдите обработчик событий RoleEnvironmentChanging внутри класса WebRole и замените его код следующим фрагментом (выделенным) кода. (Фрагмент кода Ї WindowsAzureDebugging-Ex1-WebRole RoleEnvironmentChanging event handler-CS) C# public class WebRole : RoleEntryPoint { ... private void RoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e) { // для изменения любого параметра конфигурации, кроме EnableTableStorageTraceListener if (e. Changes. OfType<RoleEnvironmentConfigurationSettingChange>().Any(change => change. ConfigurationSettingName!= "EnableTableStorageTraceListener")) { // Чтобы перезапустить этот экземпляр роли, задайте параметру e. Cancel значение true e. Cancel = true; } } ... } (Фрагмент кода Ї WindowsAzureDebugging-Ex1-WebRole RoleEnvironmentChanging event handler-VB) Visual Basic Public Class WebRole Inherits RoleEntryPoint ... Private Sub RoleEnvironmentChanging(ByVal sender As Object, ByVal e As RoleEnvironmentChangingEventArgs) ' для изменения любого параметра конфигурации, кроме EnableTableStorageTraceListener If e. Changes. OfType(Of RoleEnvironmentConfigurationSettingChange)().Any(Function(change) change. ConfigurationSettingName <> "EnableTableStorageTraceListener") Then ' Чтобы перезапустить этот экземпляр роли, задайте параметру e. Cancel значение true e. Cancel = True End If End Sub ... End Class Примечание. Событие RoleEnvironmentChanging возникает до того, как изменение конфигурации службы будет применено к работающим экземплярам роли. Обновленный обработчик просматривает коллекцию изменений и перезапускает экземпляр роли при наличии любого изменения параметров конфигурации, если только такое изменение не касается значения параметра EnableTableStorageTraceListener. Если изменяется именно этот параметр, экземпляру роли разрешается применить это изменение без перезапуска. Теперь добавьте следующий (выделенный) код, чтобы определить обработчик для события RoleEnvironmentChanged, в файл Global. asax. cs (для проектов Visual C#) или Global. asax. vb (для проектов Visual Basic). (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Global RoleEnvironmentChanged event handler-CS) C# public class MvcApplication : System. Web. HttpApplication { ... private void RoleEnvironmentChanged(object sender, RoleEnvironmentChangedEventArgs e) { // настройка прослушивателя трассировки EnableTableStorageTraceListener на любые изменения if (e. Changes. OfType<RoleEnvironmentConfigurationSettingChange>().Any(change => change. ConfigurationSettingName == "EnableTableStorageTraceListener")) { ConfigureTraceListener(); } } ... } (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Global RoleEnvironmentChanged event handler-VB) Visual Basic Public Class MvcApplication Inherits System. Web. HttpApplication ... Private Sub RoleEnvironmentChanged(ByVal sender As Object, ByVal e As RoleEnvironmentChangedEventArgs) ' настройка прослушивателя трассировки EnableTableStorageTraceListener на любые изменения If e. Changes. OfType(Of RoleEnvironmentConfigurationSettingChange)().Any(Function(change) change. ConfigurationSettingName = "EnableTableStorageTraceListener") Then ConfigureTraceListener() End If End Sub ... End Class Примечание. Обработчик событий RoleEnvironmentChanged вызывается после того, как изменение конфигурации службы было применено к работающим экземплярам роли. Если это изменение касается параметра конфигурации EnableTableStorageTraceListener, обработчик вызывает метод ConfigureTraceListener, чтобы включить или отключить прослушиватель трассировки. И наконец, вставьте следующую (выделенную) строку в метод Application_Start сразу после вызова метода ConfigureTraceListener для подписки на событие Changed объекта RoleEnvironment. C# public class MvcApplication : System. Web. HttpApplication { ... protected void Application_Start() { CloudStorageAccount. SetConfigurationSettingPublisher((configName, configSetter) => { configSetter(RoleEnvironment. GetConfigurationSettingValue(configName)); }); ConfigureTraceListener(); RoleEnvironment. Changed += RoleEnvironmentChanged; AreaRegistration. RegisterAllAreas(); RegisterRoutes(RouteTable. Routes); } ... } Visual Basic Public Class MvcApplication Inherits System. Web. HttpApplication ... Sub Application_Start() CloudStorageAccount. SetConfigurationSettingPublisher(Sub(configName, configSetter) configSetter(RoleEnvironment. GetConfigurationSettingValue(configName))) ConfigureTraceListener() AddHandler RoleEnvironment. Changed, AddressOf RoleEnvironmentChanged AreaRegistration. RegisterAllAreas() RegisterRoutes(RouteTable. Routes) End Sub ... End Class Чтобы приложение могло записывать диагностические данные в журнал ошибок, добавьте в него глобальный обработчик ошибок. Для этого добавьте следующий метод в класс MVCApplication. (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Application_Error-CS) C# public class MvcApplication : System. Web. HttpApplication { ... protected void Application_Error() { var lastError = Server. GetLastError(); System. Diagnostics. Trace. TraceError(lastError. Message); } } (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Application_Error-VB) Visual Basic Public Class MvcApplication Inherits System. Web. HttpApplication ... Protected Sub Application_Error() Dim lastError = Server. GetLastError() System. Diagnostics. Trace. TraceError(lastError. Message) End Sub End Class Примечание. Событие Application_Error формируется для записи любых необработанных ошибок при обработке запроса. Показанный ранее обработчик событий получает ссылку на объект необработанного исключения с помощью метода Server. GetLastError, а затем с помощью метода TraceError класса System. Diagnostics. Trace заносит сообщение об ошибке в журнал. Обратите внимание, что объект Trace выдает сообщение всем прослушивателям из своей коллекции Listeners, включая TableStorageTraceListener, если он был включен в параметрах конфигурации. Как правило, в этой коллекции также есть экземпляры класса DefaultTraceListener и DevelopmentFabricTraceListener (при выполнении решения в эмуляторе вычислений). Последний записывает свои выходные данные в журнал, который можно просматривать из пользовательского интерфейса эмулятора вычислений. Для записи в журнал диагностики Windows Azure прослушиватель DiagnosticMonitorTraceListener также можно добавить в файл роли Web. config или App. config. При использовании прослушивателя трассировки этого типа журналы собираются локально в каждой роли. Для их получения сначала необходимо указать, чтобы монитор диагностики копировал эти сведения в службы хранения. В шаблонах проектов ролей, имеющихся в инструментах Windows Azure для Microsoft Visual Studio, уже есть параметры, необходимые для использования DiagnosticMonitorTraceListener в формируемых файлах конфигурации.
Рис. 12 Коллекция прослушивателей объекта трассировки с настроенными прослушивателями трассировки Откройте файл QuoteController. cs (для проектов Visual C#) или QuoteController. vb (для проектов Visual Basic) из папки Controllers проекта FabrikamInsurance и добавьте следующий метод. (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Controller OnException method-CS) C# [HandleError] public class QuoteController : Контроллер { ... protected override void OnException(ExceptionContext filterContext) { System. Diagnostics. Trace. TraceError(filterContext. Exception. Message); } } (Фрагмент кода Ї WindowsAzureDebugging-Ex1-Controller OnException method-VB) Visual Basic <HandleError()> Public Class QuoteController Inherits Controller ... Protected Overrides Sub OnException(ByVal filterContext As ExceptionContext) System. Diagnostics. Trace. TraceError(filterContext. Exception. Message) End Sub End Class Примечание. Метод OnException вызывается при возникновении необработанного исключения во время обработки действия в контроллере. При работе с приложениями MVC необработанные исключения обычно отслеживаются на уровне контроллера при условии, что они возникают во время выполнения действия контроллера, а также при наличии у действия (или контроллера) атрибута HandleErrorAttribute. Для занесения в журнал исключений в действиях контроллера необходимо переопределить метод OnException контроллера, поскольку событие Application_Error не формируется, когда фильтр обработки ошибок отслеживает исключения. По умолчанию, когда метод действия с атрибутом HandleErrorAttribute формирует какое‑либо исключение, MVC отображает представление Ошибка, расположенное в папке ~/Views/Shared. Помимо регистрации ошибок, трассировку можно использовать для записи других важных событий, возникающих во время выполнения приложения. Например, для регистрации вызовов определенных действий контроллера. Чтобы посмотреть, как это работает, вставьте следующую (выделенную) инструкцию трассировки в начало метода Calculator, чтобы заносить в журнал сообщение при каждом вызове этого действия. C# public class QuoteController : Контроллер { ... public ActionResult Calculator() { System. Diagnostics. Trace. TraceInformation("Calculator called..."); QuoteViewModel model = new QuoteViewModel(); PopulateViewModel(model, null); return View(model); } ... } Visual Basic Public Class QuoteController Inherits Controller ... Public Function Calculator() As ActionResult System. Diagnostics. Trace. TraceInformation("Calculator called...") Dim model As New QuoteViewModel() PopulateViewModel(model, Nothing) Return View(model) End Function ... End Class Аналогичным образом добавьте инструкцию трассировки, приведенную (выделенную) далее, в действие About. C# public class QuoteController : Контроллер { ... public ActionResult About() { System. Diagnostics. Trace. TraceInformation("About called..."); return View(); } ... } Visual Basic Public Class QuoteController Inherits Controller ... Public Function About() As ActionResult System. Diagnostics. Trace. TraceInformation("About called...") Return View() End Function ... End Class Задача 4. Создание средства просмотра журнала
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 |


