为了支持流媒体,我将带有重写的Message返回到OnWriteBody ...
问题是如果在OnWriteBody中引发了异常(数据库超时或两者中的任何一个)
没有调用IErrorHandler中的ProvideFault,因此我无法将错误传播到客户端(通过IErrorHandler中的筛选)。
有没有办法解决这个问题。

谢谢。

最佳答案

使用WCF进行流式传输时,我创建了两个ServiceContracts,一个用于进行流式传输,另一个将在流式传输结束时发送通知。

响应ServiceContract我使用双工类型绑定(bind)。客户首先致电响应ServiceContract以获得其交易的票证,然后致电我的转账ServiceContract。然后,在交易结束时,将从响应ServiceContract通知客户成功或失败。



[ServiceContract]
public interface IStreamFileService
{
  [OperationContract]
  void Upload(Stream stream);
}

[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ITransferCallback))]
public interface IStreamFileResponseService
{
  [OperationContract(IsOneWay = false, IsInitiating = true, IsTerminating = false)]
  Guid StartUpload();
}

[ServiceContract]
public interface ITransferCallback
{
  [OperationContract]
  void OperationComplete(ResponseMessage response);
}


我在两项服务中执行此操作,因为我的要求和工作流程要求我跟踪许多内容并进行身份验证,验证等。

关于wcf - WCF-流式传输时的错误处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/844833/

10-12 23:46