asp.net – 在Azure Compute Emulator之外运行DiagnosticMonitor
我们使用DiagnosticMonitorTraceListener作为通用跟踪侦听器(主要用于ASP.NET运行状况监视)以及用于异常处理的Enterprise Library 5侦听器.这在Azure上运行时效果很好,但重要的是我们能够以最小的更改在Azure之外运行网站.
一种选择是动态注册,如下所示: protected void Application_Start() { if (Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable) { System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); System.Diagnostics.Trace.AutoFlush = true; } } 这适用于ASP.NET Health Monitoring和System.Diagnosics的一般用途,但不适用于我们具有以下硬编码配置的Enterprise Library: <categorySources> <add switchValue="All" name="General"> <listeners> <add name="Event Log Listener" /> <add name="Azure Diagnostics Trace Listener" /> </listeners> </add> </categorySources> 如果没有解决,调用ExceptionPolicy.HandleException将生成:
要根据应用程序的运行位置有条件地删除它,我们可以使用EL5的流畅配置API,但必须重写我们的配置(它是全部或全部). 我们也可以使用web.config转换,除了已经有3种不同的解决方案配置(例如,dev,staging,production)之外,我们必须引入第4个来区分dev-standalone和dev-azure. 最后一个选择是创建一个自定义侦听器,它将所有消息路由到** **(如果在Azure上运行)或什么都不做. 还有其他建议吗? 仅供参考,ASP.NET运行状况监视配置如下: <healthMonitoring enabled="true"> <providers> <add name="TraceWebProvider" type="System.Web.Management.TraceWebEventProvider" /> </providers> <rules> <add name="Application Events" eventName="Application Lifetime Events" provider="TraceWebProvider" profile="Default" minInstances="1" maxLimit="Infinite" minInterval="00:01:00" /> </rules> </healthMonitoring> 解决方法
您可以创建DiagnosticMonitorTraceListener,然后将其添加到您的类别的TraceSources集合中.
从EntLib配置中删除Azure诊断跟踪侦听器: <categorySources> <add switchValue="All" name="General"> <listeners> <add name="Event Log Listener" /> </listeners> </add> </categorySources> 然后使用下面的代码在运行时添加它: protected void Application_Start() { if (Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable) { LogSource logSource; Logger.Writer.TraceSources.TryGetValue("General",out logSource); logSource.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener()); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – System.Web.Providers不适用于中等信任
- asp.net-mvc-5.1 – 如何在EnumDropDownListFor中设置所选值
- 在ASP.Net 2.0应用程序中检查用户会话状态的状态和大小的最
- asp-classic – ASP格式化日期
- asp.net-web-api – 从局域网中的其他计算机使用ASP.NET We
- asp.net-mvc – 如何在ASP.NET MVC中围绕AreaRegistration.
- 如何合理地构建我的ASP.NET MVC 2项目与区域
- asp.net Web应用程序中的静态变量
- asp.net – 使用简单的ActionFilterAttribute运行时出错
- asp.net – Linq对sql对象是否可序列化为会话状态?