Настраиваемый уровень поведения пользовательской конечной точки WCF-клиента
Я пытаюсь вызвать веб-сервис Java из клиента WCF.
Служба Java использует безопасность WSE 3.0, поэтому я использую настраиваемую привязку и в файле Reference.cs службы. Если я изменяю контракт службы на использование protectionlevel.sign, и все работает нормально.
Теперь проблема в том, что мне нужно позвонить в эту службу из BizTalk. но у меня нет возможности установить уровень защиты для подписи, и вызовы службы не выполняются.
Я пытаюсь написать пользовательское поведение, которое происходит от поведения ClientCredentials и переопределить метод ApplyClientBehavior, чтобы установить уровень защиты следующим образом:
public override void ApplyClientBehavior(ServiceEndpoint serviceEndpoint, System.ServiceModel.Dispatcher.ClientRuntime behavior)
{
base.ApplyClientBehavior(serviceEndpoint, behavior);
serviceEndpoint.Contract.ProtectionLevel = ProtectionLevel.Sign;
}
Но это не работает, происходит сбой с той же ошибкой, как если бы для proctionlevel было установлено значение по умолчанию. Если я проверяю конечную точку контракта при отладке, уровень защиты устанавливается на подпись, но это не имеет никакого эффекта.
Затем я попытался удалить protectionlevel.sign из контракта на обслуживание в файле reference.cs и использовать вместо него поведение clientcredentials, а перед вызовом службы установить уровень защиты для входа в код, подобный этому.
Service.ServiceClient client = new Service.ServiceClient();
client.Endpoint.Contract.ProtectionLevel = System.Net.Security.ProtectionLevel.Sign;
var result = client.GetData();
И это прекрасно работает. Но я не могу сделать это в BizTalk
Кто-нибудь может понять, почему вышеуказанный код работает, а пользовательское поведение конечной точки - нет?