C# 请求/响应适用于基本体,但不适用于对象

C# 请求/响应适用于基本体,但不适用于对象,c#,masstransit,C#,Masstransit,我使用以下命令设置了请求-响应消息: public class StatusUpdateRequestConsumer : IConsumer<StatusUpdateRequest> { private readonly IWmiService _wmiService; public StatusUpdateRequestConsumer(IWmiService wmiService) { _wmiService = wmiService;

我使用以下命令设置了请求-响应消息:

public class StatusUpdateRequestConsumer : IConsumer<StatusUpdateRequest>
{
    private readonly IWmiService _wmiService;

    public StatusUpdateRequestConsumer(IWmiService wmiService)
    {
        _wmiService = wmiService;
    }

    public async Task Consume(ConsumeContext<StatusUpdateRequest> context)
    {
        var bios = _wmiService.GetBios();         

        await context.RespondAsync<StatusUpdateResponse>(
            new StatusUpdateResponse()
            {
                // This line works fine and message is sent back instantly
                Message = JsonConvert.SerializeObject(bios) //,
                // Sending the actual object instead of a JSON 
                // representation as so doesn't work
                // Bios = bios           
            }
        );
    }
}
公共类StatusUpdateRequestConsumer:IConsumer
{
专用只读IWmiService;
公共状态更新请求使用者(IWmiService wmiService)
{
_wmiService=wmiService;
}
公共异步任务使用(使用上下文)
{
var bios=_wmiService.GetBios();
等待上下文。响应异步(
新状态更新响应()
{
//这条线路工作正常,信息会立即发送回来
Message=JsonConvert.SerializeObject(bios)/,
//发送实际对象而不是JSON
//因此,表示不起作用
//Bios=Bios
}
);
}
}
通过对我的对象执行JsonConvert.SerializeObject()并发送结果来发送字符串时,消息会立即被接收,并且一切正常

当我试图用实际对象本身(在上面的例子中是bios)发送消息时,中的响应从未收到,但没有抛出异常或错误

我以为MassTransit会在发送消息之前以同样的方式序列化为JSON,有人知道为什么这样做不起作用吗?或者我可以应用任何其他故障排除方法来尝试查找报告的错误(如果有)


我尝试添加
IConsumer
IConsumer
,但没有调用它们。

在消息契约中使用内部系统类型并不总是最佳选择,通常是因为您可能会看到尝试序列化BIOS对象的情况。建议将该对象映射到消息约定定义的内容中,而不是依赖于内部系统类型

这就是说,消息可能正在发送,但由于缺少程序集引用或其他原因,无法在接收端进行反序列化,这也是为什么最好不要使用系统类型进行序列化的原因。您可能能够序列化它,但它在反序列化上失败,因为它生成一个ReceiveFault,或者可能只是发布了一个
错误
,而不是一个
错误
,因为它无法反序列化该类型