Использование службы WCF без InnerChannel - как перехватить исходящий запрос - PullRequest
0 голосов
/ 28 ноября 2018

Я использую Службу WCF, предоставленную внешней компанией.

Я создал прокси WSDL на стороне клиента с помощью wsdl.exe - теперь у меня есть файл ac #

public partial class ExternalCompanyServiceInstance : System.Web.Services.Protocols.SoapHttpClientProtocol

Мне нужно изменить вызов SOAP, прежде чем он будет отправлен.Мне нужно удалить строку, которой там быть не должно,

Content-Type: application/soap+xml; charset=utf-8; action="ShouldNotBeThere"

и мне нужно вставить заголовок:

<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">  <wsa:To>https://10.10.10.10/ExternalService.svc</wsa:To></soap:Header>

Когда я создаю экземпляр ExternalCompanyServiceInstance:

var client = new ExternalCompanyServiceInstance();

, он просто не дает мне InnerChannel , где я могу менять заголовки.Таким образом, InnerChannel не является опцией.

Поэтому я не могу использовать большинство других примеров для SO.

Могу ли я использовать IClientMessageInspector для измененияисходящий SOAP-запрос?

Можно ли расширить ExternalCompanyServiceInstance для использования этого интерфейса?

Я пробовал, но не могу заставить BeforeSendRequest выполнить.

...