Создайте службу REST, которая использует другую службу SOAP C # - PullRequest
0 голосов
/ 09 октября 2019

Я сделал простой сервис REST ( WCF ), который будет использовать другой сервис SOAP .

Мой RESTСлужба работает нормально, но когда я добавляю службу SOAP (, добавленную в качестве ссылки на службу ), она добавляет данные в файл Web.config .

Одна вещь, которую я хочу подчеркнуть, это то, что я не хочу предоставлять сервис SOAP , я просто буду его использовать.

Но когда я попытаюсь вызватьВо время операции я получаю эту ошибку:

Конечная точка на www.myaddress.com не имеет привязки с None MessageVersion. 'System.ServiceModel.Description.WebHttpBehavior' предназначен только для использования с WebHttpBinding или аналогичными привязками.

При просмотре в Интернете у людей возникают проблемы с файлом конфигурации, но они предоставляют две службы. Я просто выставляю одну услугу и потребляю другую. На данный момент служба REST , которую я использую через localhost , а служба SOAP использует аутентификацию SAML ADFS

Вот так выглядит мой конфигурационный файл, может кто-нибудь предложить исправление?

    <configuration>

      <appSettings>
        <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
      </appSettings>
      <system.web>
        <compilation debug="true" targetFramework="4.5.2" />
        <httpRuntime targetFramework="4.5.2"/>
      </system.web>
      <system.serviceModel>
        <bindings>
          <ws2007FederationHttpBinding>
            <binding name="WS2007FederationHttpBinding_mySOAPService">
              <security mode="TransportWithMessageCredential">
                <message>
                  <issuer address="issuer.address"/>
                  <issuerMetadata address="issuer.metadata.address" />
                  <tokenRequestParameters>
                    .
                    .
                    .
                  </tokenRequestParameters>
                </message>
              </security>
            </binding>
          </ws2007FederationHttpBinding>
          <ws2007HttpBinding>
            <binding name="binding.address">
              <security mode="TransportWithMessageCredential">
                <transport clientCredentialType="None" />
                <message clientCredentialType="UserName" establishSecurityContext="false" />
              </security>
            </binding>
          </ws2007HttpBinding>
        </bindings>
        <client>
          <endpoint address="endpoint.address"
            binding="ws2007FederationHttpBinding" bindingConfiguration="WS2007FederationHttpBinding_mySOAPService"
            contract="ServiceReference1.mySOAPService" name="WS2007FederationHttpBinding_mySOAPService" />
        </client>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
              <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
          <endpointBehaviors>
            <behavior>
              <webHttp/>
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <protocolMapping>
            <add binding="webHttpBinding" scheme="http" />
            <add binding="basicHttpsBinding" scheme="https" />
        </protocolMapping>    
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
        <!--
            To browse web app root directory during debugging, set the value below to true.
            Set to false before deployment to avoid disclosing web app folder information.
          -->
        <directoryBrowse enabled="true"/>
      </system.webServer>

    </configuration>

1 Ответ

0 голосов
/ 09 октября 2019

Да, именно так оно и будет работать по умолчанию!

Но вы можете легко переопределить эти настройки.

        var soapService = new SoapClass.SoapService(
            new BasicHttpBinding(BasicHttpSecurityMode.Transport), //Pick the right mode here
            new EndpointAddress(mySoapUrl));

Я предполагаю, что у вас есть несколько проектов, а Soapдобавляется в неправильный конфиг.

Другой вариант - переместить правильные настройки конфига в правильный конфиг.

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