WCF-流式传输时的错误处理

标签 wcf error-handling streaming

为了支持流式传输,我将带有覆盖的消息返回给 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-流式传输时的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/844833/

相关文章:

c# - 将启用 Ajax 的 WCF 服务公开给 C# 代码

apache-spark - Spark 设置为从最早的偏移量读取 - 在尝试使用 Kafka 上不再可用的偏移量时引发错误

postgresql - 数据库镜像/Postgres 流复制

c# - 我可以通过 wcf 上传图像而不转换为字节数组吗

c# - 使用证书运行 WCF 服务时失败

c++ - 当对象的当前状态不允许对其进行操作时抛出哪个异常?

excel - "Dependents.Count"语句在 "Worksheet_SelectionChange"Sub 中使用时重新启动宏

node.js - 如何通过 ffmpeg 将 Node.js 中生成的 Canvas 流式传输到 youtube/任何其他 rtmp 服务器?

c# - 远程服务器返回意外响应 : (413) Request Entity Too Large.?

javascript - 对象#<Text>在XAJAX上没有方法 'getBoundingClientRect'