为了支持流媒体,我将带有重写的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/