我正在尝试反序列化来自如下创建的服务总线主题的消息(.NET 4.6.1):
SubscriptionClient ServiceBusClient =
SubscriptionClient.CreateFromConnectionString
(ConnectionString, Topic, SubscriptionName);
然后我按如下方式创建on message方法:
OnMessageOptions options = new OnMessageOptions();
options.AutoComplete = false;
options.AutoRenewTimeout = TimeSpan.FromMinutes(1);
ServiceBusClient.OnMessage((message) =>
{
try
{
Stream stream = message.GetBody<Stream>();
StreamReader reader = new StreamReader(stream);
string payload = reader.ReadToEnd();
dynamic deserialize = Newtonsoft.Json.Linq.JObject.Parse(payload);
var avl = AvlDatum.Parser.ParseFrom(Convert.FromBase64String(deserialize.body));
/* do other stuff here */
message.Complete();
}
catch (Exception)
{
message.Abandon();
}
}, options);
使用此代码但我绝对没有收到任何消息。我认为这个主题出了问题,但是如果我用动态对象注释掉这一行,就会收到很好的消息。为什么我无法在OnMessage委托中使用Newtonsoft Parser /动态对象?任何信息将不胜感激。