我有一个MSMQ触发器,可以打开一个独立的可执行文件。规则操作将消息ID(作为变体)作为调用参数传递。然后我使用消息id通过Queue.ReceiveById()接收消息。
一切都很好,但有一点点。消息ID的发送方式如下:
{5EADA58F-C733-48C3-A52A-A9FA749E7ADF}\2063
但是Queue.ReceiveById()函数要求消息ID看起来像这样(没有括号)
5EADA58F-C733-48C3-A52A-A9FA749E7ADF\2063
有人可以向我解释一下花括号是什么意思吗?是否有正确的方法来转换它(除了删除括号)?
编辑:我应该明确指出Message ID是作为字符串传递的,因为它是作为命令行参数传递给EXE的
答案 0 :(得分:2)
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]);
你可能会发现更多"优雅",但只是删除一些花括号似乎很重。
答案 1 :(得分:1)
转换为字符串并用空字符串替换括号。
这是一个代码示例
var x = "{5EADA58F-C733-48C3-A52A-A9FA749E7ADF}\2063";
string result = x.ToString().Replace("{",string.Empty).Replace("}",string.Empty);