我想将一些async
方法的结果信息放入Glimpse Message Broker中。我尝试使用Task.ContinueWith
:
task.ContinueWith((t) =>
{
var response = t.Result;
var message = new ExternalRequestMessage
{
Url = url,
Method = method,
RequestBody = requestBody,
WasAsync = true,
StatusCode = (int)response.StatusCode,
Status = response.StatusCode.ToString(),
WasSuccess = response.IsSuccessStatusCode,
Fault = response.Fault,
};
if (messageBroker != null)
{
messageBroker.Publish(message);
}
});
这段代码执行没有问题,我可以设置断点并遵循代码,所以我知道它会执行。
然而,当我从经纪人处读回消息时,他们不在那里。例如,下面的选项卡代码上的断点显示消息不存在:
public override object GetData(ITabContext context)
{
return context.GetMessages<ExternalRequestMessage>();
}
此外 - 我将ExternalRequestMessage
从同步上下文放到代理上,这些消息按预期显示在选项卡中。
任何人都可以了解这里发生的事情吗?
修改:我应该补充一点,我正在使用ContinueWith
因为我不希望应用等待结果只是为了将消息添加到代理,所以只是使用task.Result
不是一种选择。
答案 0 :(得分:0)
想出来 -
我的web.config
文件
<appSettings>
<add key="Glimpse:DisableAsyncSupport" value="true"/>
</appSettings>
删除此值或将其设置为false可解决此问题。