【问题标题】:WCF AsyncPattern and masstransit request/responseWCF AsyncPattern 和公共交通请求/响应
【发布时间】:2013-07-30 23:32:05
【问题描述】:

我尝试通过公共交通请求/响应实现异步服务操作 (http://msdn.microsoft.com/en-us/library/ms731177.aspx)。

[ServiceContract]
public interface IService1
{
    [OperationContractAttribute(AsyncPattern = true)]
    IAsyncResult BeginMyOperation(string data, AsyncCallback callback, object asyncState);

    string EndMyOperation(IAsyncResult result);
}

public class Service1 : IService1
{
    private string _answer;

    public IAsyncResult BeginMyOperation(string data, AsyncCallback callback, object asyncState)
    {
        return Bus.Instance.BeginPublishRequest(
            new MyRequestMessage { Data = data }, callback, asyncState, cfg =>
                {
                    cfg.Handle<MyResponseMessage>(c => _answer = c.Answer);
                    cfg.SetTimeout(5.Seconds());
                });
    }

    public string EndMyOperation(IAsyncResult result)
    {
        Bus.Instance.EndPublishRequest<MyResponseMessage>(result);
        return _answer;
    }
}

但 EndPublishRequest 抛出异常“参数不是 IRequest”。我做错了吗?

【问题讨论】:

    标签: wcf masstransit


    【解决方案1】:

    是的,如果您查看签名,异常消息需要更好一些:

    public static bool EndPublishRequest<TRequest>(this IServiceBus bus, IAsyncResult asyncResult)
    

    很明显 request 消息类型是此处所需的类型 arg。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      相关资源
      最近更新 更多