2013-07-28 137 views
1

我嘗試實現具有masstransit請求/響應的異步服務操作(http://msdn.microsoft.com/en-us/library/ms731177.aspx)。WCF AsyncPattern和masstransit請求/響應

[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」。難道我做錯了什麼?

回答

0

呀,異常信息必須是一個好一點,如果你在簽名看,雖然:

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

很明顯的是,請求消息類型所需類型ARG這裏。