. NET Основной клиент WCF игнорирует прокси - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь настроить прокси для моего клиента WCF в моем проекте базовой библиотеки. net (используется в asp. net core mvc проекте), но запрашивает go прямиком на адрес конечной точки, игнорируя прокси. Я не могу получить их ни в SoapUI Http Monitor, ни в Wireshark с установленным фильтром tcp.port для прокси-порта.

Вот мой метод создания и настройки клиента

        public EventsServiceClient CreateService(IServiceProvider serviceProvider)
        {
            var encoding = new MtomMessageEncoderBindingElement(new TextMessageEncodingBindingElement());
            var transport = new HttpTransportBindingElement();
            transport.ProxyAddress = new Uri("http://localhost:4000");
            transport.BypassProxyOnLocal = false;
            transport.UseDefaultWebProxy = false;
            var customBinding = new CustomBinding(encoding, transport);
            var endpoint = new EndpointAddress("http://localhost:51625/Services/Implementations/Events/EventsService.svc/EventsService");
            var service = new EventsServiceClient(customBinding, endpoint);
            service.Endpoint.EndpointBehaviors.Add(new AuthorizeEndpointBehavior(this.configuration, serviceProvider));
            return service;
        }

Мой сервис использует MTOM-кодирование, поэтому я использую пользовательское связывание с MtomMessageEncoderBindingElement из WcfCoreMtomEncoder (https://github.com/lennykean/WcfCoreMtomEncoder).

Вот фрагмент моего файла web.config в WCF

  <system.serviceModel>
    <extensions>
      <behaviorExtensions>
        <add name="authorizeInspector"
             {...}
        />
      </behaviorExtensions>
    </extensions>
    <behaviors>
      <serviceBehaviors>
        <behavior name="developmentBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="EventsServiceEndpointBehavior">
          <authorizeInspector />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <customBinding>
        <binding name="EventsServiceBinding" >
          <mtomMessageEncoding />
          <httpTransport />
        </binding>
      </customBinding>
    </bindings>
    <services>
      <service name="RSI.WebServices.Services.EventsService"
               behaviorConfiguration="developmentBehavior">
        <endpoint address="EventsService"
                  behaviorConfiguration="EventsServiceEndpointBehavior"
                  binding="customBinding"
                  bindingConfiguration="EventsServiceBinding"
                  contract="RSI.WebServices.Services.IEventsService">
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:51625/"/>
          </baseAddresses>
        </host>
      </service>
    </services>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

Я что-то здесь упускаю?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...