我有一个需要以同步方式调用nservicebus的Web服务。 如何实现这一目标?
答案 0 :(得分:1)
看看AsyncPages示例。如果你希望它是同步的,只需阻塞直到回调完成。
希望这有帮助!
答案 1 :(得分:1)
还可以选择将NServiceBus端点作为Web服务和wcf服务公开,并且可以像您期望的那样同步调用这些端点。
答案 2 :(得分:1)
客户端不是aspx页面,所以我不能像async样本那样使用它。 我正在使用RIA服务,所以我无法控制wcf服务本身的同步。 我通过使用Wait和Pulse来解决它:
[WebMethod]
public string HelloWorld(int number)
{
string returnVal = "" ;
var command = new Command { Id = number };
lock(this)
{
Global.Bus.Send(command).Register<ErrorCodes>(code =>
{
lock(this)
{
returnVal = returnVal = Enum.GetName(typeof(ErrorCodes), code);
Monitor.Pulse(this);
}
}
);
Monitor.Wait(this);
}
return returnVal;
}