WCF-客户端自定义端点行为设置protectionlevel

时间:2012-07-20 09:28:26

标签: wcf biztalk wcf-client biztalk-2009 endpointbehavior

我正在尝试从WCF客户端调用java webservice。

Java服务使用WSE 3.0安全性,因此我使用自定义绑定并在服务的Reference.cs文件中如果我将服务合同更改为使用protectionlevel.sign并且一切正常。

现在问题是我需要从BizTalk调用此服务。但是我无法将protectionlevel设置为签名,并且对服务的调用失败。

我正在尝试编写一个源自ClientCredentials行为的自定义行为,并覆盖ApplyClientBehavior方法以设置保护级别,如下所示:

public override void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, System.ServiceModel.Dispatcher.ClientRuntime behavior)
{
        base.ApplyClientBehavior(serviceEndpoint, behavior);
        serviceEndpoint.Contract.ProtectionLevel = ProtectionLevel.Sign;

}

但是这不起作用它失败的错误与proctionlevel设置为默认值相同。如果我在调试中检查合同端点,则保护级别设置为sign但它没有效果。

然后我尝试从reference.cs文件中的服务契约中删除protectionlevel.sign并使用clientcredentials行为,而不是在调用service之前,将protectionlevel设置为登录这样的代码。

Service.ServiceClient client = new Service.ServiceClient();
client.Endpoint.Contract.ProtectionLevel = System.Net.Security.ProtectionLevel.Sign;

var result = client.GetData();

这很好用。但我不能在BizTalk中做到这一点

任何人都知道为什么上面的代码有效,但自定义端点行为不起作用?

0 个答案:

没有答案