在WCF中自动重新发送消息

时间:2009-01-30 08:52:28

标签: .net wcf web-services

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

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

我用谷歌搜索这个无济于事。我能找到的最接近的东西告诉我,我可以在通道层完成此操作,但根本没有提供示例代码。

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

1 个答案:

答案 0 :(得分:0)

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

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

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