小编Lar*_* Ek的帖子

将MSMQ端到端跟踪与WCF跟踪和应用程序级别日志记录相关联

背景:

我正在解决WCF通过事务MSMQ(带netMsmqBinding)发送的消息似乎消失的问题.使用WCF的代码是在第三方程序集中,我无法更改.我几乎找不到问题的线索,但计划启用各种跟踪功能,以便确定问题所依赖的位置.

语境:

  1. 我启用了MSMQ 端到端跟踪.它为每个发送的消息记录两个事件.

    • 将消息写入传出队列时的一个事件.该消息包含MSMQ消息id(由guid和整数组成,即7B476ADF-DEFD-49F2-AF5A-0CF27C5152C0\6481271).
    • 通过网络发送该消息的另一个事件.
  2. 我启用了详细的WCF跟踪.

  3. 我还有应用程序级别的日志记录,它记录由应用程序代码定义的消息ID(让我们称之为"应用程序消息ID").

  4. 我已经在发送的MSMQ消息上启用了正面和负面源日记功能.

  5. 我已在接收队列上启用了日记功能.

问题:

当消息丢失时,我知道丢失消息的应用程序ID(它由发送方记录).我现在想看一下End-to-End跟踪,看看消息是否写入了传出队列.

如何将端到端跟踪中的事件与应用程序级别日志和WCF跟踪相关联?

思路:

  • 在System.Messaging中使用托管MSMQ API发送MSMQ消息时,消息的MSMQ ID在发送消息后可用.但是,当WCF执行发送操作时,我还没有找到记录此方法的方法.WCF跟踪记录了一个MSMQMessageId guid,但令人惊讶的是,这个值并不是我猜想的实际MSMQ id.是否可以访问实际的MSMQ消息ID并记录它?

  • 在应用程序日志中记录本机线程ID以及应用程序级别ID和时间戳.MSMQ将本机线程ID记录到端到端跟踪中,因此实际上这可能足以进行关联.如果我找不到更优雅的解决方案,这是我的计划B.

wcf msmq

37
推荐指数
1
解决办法
1182
查看次数

用msdeploy参数替换web config*elements*

我们正在使用msdeploy(或Web部署,如果您愿意)打包和部署Web应用程序.通过声明参数包时间,我们可以在部署时提供值(以替换连接字符串等).

我们目前面临的问题是替换我们的Web配置中的applicationSettings部分中的值.我们不能让msdeploy替换值,因为我们要替换的内容是xml元素中的文本,而不是属性值(我们得到的警告是:"无法在节点类型'Element'上设置值").

相关配置如下所示:

<applicationSettings>
  <Name.Of.Assembly.Properties.Settings>
    <setting name="someSetting" serializeAs="String">
      <value>I wanna be replaced</value>
    </setting>
  </Name.Of.Assembly.Properties.Settings>
</applicationSettings>
Run Code Online (Sandbox Code Playgroud)

而declare参数xml如下所示:

<parameter name="XX" defaultValue="default">
  <parameterEntry kind="XmlFile"
                       scope="Web\.config$"
                       match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value" />
</parameter>
Run Code Online (Sandbox Code Playgroud)

msdeploy只支持替换属性值还是我做错了什么?

web-config msdeploy

20
推荐指数
1
解决办法
6254
查看次数

标签 统计

msdeploy ×1

msmq ×1

wcf ×1

web-config ×1