繁体   English   中英

MSMQ消息ID(作为变体)

[英]MSMQ Message ID (as Variant)

我有一个MSMQ触发器,可以打开一个独立的可执行文件。 规则操作将消息ID(作为变体)作为调用参数传递。 然后我使用消息id通过Queue.ReceiveById()接收消息。

一切都很好,但有一点点。 消息ID的发送方式如下:

{5EADA58F-C733-48C3-A52A-A9FA749E7ADF}\2063

但是Queue.ReceiveById()函数要求消息ID看起来像这样(没有括号)

5EADA58F-C733-48C3-A52A-A9FA749E7ADF\2063

有人可以向我解释一下花括号是什么意思吗? 是否有正确的方法来转换它(除了删除括号)?

编辑:我应该明确表示消息ID作为字符串传递,因为它作为命令行参数传递给EXE

ID是Guid加上额外的标识符:

标识符由20个字节组成,包括两个项目:发送计算机的机器Guid和计算机上消息的唯一标识符。 这两个项的组合产生在网络上唯一的消息标识符。

所以我没有内置的解析/重新格式化功能。

如果你想“解析”字符串的guid部分来重新格式化它,你可以做类似的事情:

string id = @"{5EADA58F-C733-48C3-A52A-A9FA749E7ADF}\2063";
string[] parts = id.Split('\\');
Guid g = Guid.Parse(parts[0]);
string newID = String.Join("\\",g.ToString("D").ToUpper(),parts[1]);

您可能会发现更“优雅”,但只是删除几个花括号似乎很重。

转换为字符串并用空字符串替换括号。

这是一个代码示例

    var x = "{5EADA58F-C733-48C3-A52A-A9FA749E7ADF}\2063";
    string result = x.ToString().Replace("{",string.Empty).Replace("}",string.Empty);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM