[英]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.