Настраиваемый уровень поведения пользовательской конечной точки 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

Кто-нибудь может понять, почему вышеуказанный код работает, а пользовательское поведение конечной точки - нет?

0 ответов

Другие вопросы по тегам