Ami*_*Ami 5 c# asp.net iis trace nlog
我使用的是 NLog 4.5.2 版,我正在尝试使用${activityid}
LayoutRenderer。我已按照 NLog 教程页面上的说明进行操作:NLog ActivityId
如前所述,我System.Diagnostics.Trace.CorrelationManager.ActivityId
通过设置实例化了:System.Diagnostics.Trace.CorrelationManager.ActivityId = Guid.NewGuid()
在Application_BeginRequest
事件中。
老实说,它工作得很好,但是在我将它部署到不同的服务器后,我注意到${activityid}
没有写入。
经过一番搜索和调试,我遇到了一个奇怪的情况。在Application_BeginRequest
事件中的代码行中,ActivityId
设置得恰到好处,但是当真正的 http post 方法发生时,我看到ActivityId
具有空 guid (0000-00...) 的值。
我注意到的一件事是,在发送带有请求数据的 POST 请求时,ActivityId 是空的(再次 - 仅发送到远程服务器)。
有人可以帮我解决这个问题吗?我似乎无法弄清楚。
更新#1:
我在 Windows Server 2012 上检查了相同版本的应用程序并且它工作正常(我的问题目前在 Windows Server 2008 R2 上)。
更新#2:
我找不到解决方案,说明为什么只在 Windows Server 2008 R2 上而不是在本地(Windows 7)或 Windows Server 2012 上发生这种情况,但我设法找到了解决方法/不同的解决方案。
相反,实例化的System.Diagnostics.Trace.CorrelationManager.ActivityId
在Global.asax.cs中类,在Application_BeginRequest
事件中,我创建了一个新的DelegatingHandler
和实例化System.Diagnostics.Trace.CorrelationManager.ActivityId
时的的SendAsync方法DelegatingHandler
在这种情况下,ActivityId
为每个 http 请求生成(相同),但现在当请求是包含数据的 HTTP POST 请求时它不是空的。
这里有一个例子DelegatingHandler Example
归档时间: |
|
查看次数: |
1333 次 |
最近记录: |