WCF客户端自定义端点行为集protectionlevel

WCF客户端自定义端点行为集protectionlevel,wcf,biztalk,wcf-client,biztalk-2009,endpointbehavior,Wcf,Biztalk,Wcf Client,Biztalk 2009,Endpointbehavior,我正在尝试从WCF客户端调用java Web服务 Java服务使用WSE 3.0安全性,因此如果我将服务契约更改为使用protectionlevel.sign,并且一切正常,那么我将在服务的Reference.cs文件中使用自定义绑定 现在的问题是我需要从BizTalk调用此服务。但我无法将protectionlevel设置为签名,对服务的调用失败 我正在尝试编写一个从ClientCredentials行为派生的自定义行为,并重写ApplyClientBehavior方法以设置如下保护级别: p

我正在尝试从WCF客户端调用java Web服务

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

现在的问题是我需要从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行为。在调用服务之前,将protectionlevel设置为这样的登录代码

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

var result = client.GetData();

这个很好用。但我不能在家里这么做


任何人都知道为什么上面的代码可以工作,但自定义端点行为却不能?

可能不是您想要听到的答案,但是如果您无法撬开BizTalk来提供您想要的行为,您可以尝试使用中间(IIS托管)WCF服务作为Java服务的“包装器”。所以BizTalk WCF适配器->IIS WCF服务->Java Web服务。”这很好。但我无法在BizTalk中做到这一点“谢谢你,你说的关于更改引用的内容。cs拯救我的生命:d可能不是你想听的答案,但如果你无法撬开BizTalk来提供你想要的行为,你可以尝试使用中间层(IIS托管)WCF服务作为Java服务的“包装器”。所以BizTalk WCF适配器->IIS WCF服务->Java Web服务。”这很好用。但我不能在BizTalk中这样做“谢谢你,伙计,你说的关于更改引用的内容。cs拯救我的生命:D