【问题标题】:Automatically resend a message in WCF在 WCF 中自动重新发送消息
【发布时间】:2009-01-30 08:52:28
【问题描述】:

我正在使用 WCF 与 Java Web 服务通信。此 Web 服务有一个称为 Authenticate 的方法,它返回一个会话 ID。对此 Web 服务的每个请求都必须在 SOAP 标头中包含此会话 ID。如果会话超时,调用任何方法都会导致返回 SoapException。我想:

  • 拦截对 Web 服务的每个调用,
  • 检查此特定异常的响应消息
  • 如果找到,再次调用 Authenticate 以获取新的 Session ID,并使用更新的 Session ID 再次发送原始消息

我在 Google 上搜索过,但无济于事。我能找到的最接近的事情告诉我,我可以在通道层上完成这个,但根本没有给出示例代码。

请注意,我想在代理类中执行此操作,而不是在调用代理类的代码中。这样代理类的调用者就不必担心自动重新认证。我从自动生成的代理继承并以编程方式进行 WCF 配置。

【问题讨论】:

  • 你在找IClientMessageInspector

标签: .net wcf web-services


【解决方案1】:

我会尝试为您的 WCF 客户端包装一个“getter”,以便在所有调用之前调用身份验证函数。

    public WCFClient GetServiceInstance()
    {
        client.DoAuth();
        return client;
    }

您还可以为此方法添加一个条件,使其仅每 1 分钟左右调用一次 DoAuth()。

【讨论】:

    猜你喜欢
    • 2021-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 2012-01-30
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多