WCF SOAP 1.1 Управление выходом WSDL - PullRequest
0 голосов
/ 02 декабря 2018

После переписывания нашей старой веб-службы aspx в WCF и перехода на службы WS * / SOAP1.2 мы обнаружили, что один из наших клиентов не может справиться с этим, поэтому мы представили конечную точку basicHttp, которая работает с помощью тестов SOAPUI

Проблема в том, что, когда клиент импортирует через .svc? SingleWsdl, происходит три сбоя их импортера:

<xs:attribute name="FactoryType" type="xs:QName"/>
<xs:attribute name="Id" type="xs:ID"/>
<xs:attribute name="Ref" type="xs:IDREF"/>

, который находится внутри:

<xs:simpleType name="guid">

Наштекущим «решением» является редактирование wsdl, но это ужасно.Преступник - это инструмент, который используется совместно с salesforce (для генерации кода Apex?) - если это помогает решить проблему.

Есть ли способ настроить выход, который wcf производит на этом уровне?«Guid» определяется в разделе, который не определяет ничего, кроме простых типов - возможно ли подавление всего раздела?Полезности?Служба WCF размещается в IIS.

Вот фрагмент из файла web.config (не уверен, сколько нужно, так как в фокусе только wsdl).Первым сервисом является сервис WS * (у нас есть странное требование, чтобы клиенты получали свой собственный URI. Мы создали отдельный сервис SOAP11 с намерением, чтобы все клиенты, которым необходим доступ к SOAP 1.1, использовали этот единственный сервис. Я бы хотел получитьв будущем все это будет объединено в один сервис с несколькими конечными точками)

<service behaviorConfiguration="beUserNameBehavior" name="BEAPI.VWXYZ">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="beUserNameBinding"
     contract="BEAPI.Contracts.IBEAPI" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
<service behaviorConfiguration="beUserNameBehavior" name="BEAPI.SOAP11">
    <endpoint address="" binding="basicHttpBinding" bindingConfiguration="beBasic"
                  name="basicNameless" contract="BEAPI.Contracts.IBEAPI" />
    <endpoint address="mex" binding="mexHttpBinding" name="mexNameless"
contract="IMetadataExchange" />
</service>

Я пробовал множество предложений по адресу и привязке, которые я видел в Интернете, но, похоже, я не вижу никаких отличий.

<bindings>
    <wsHttpBinding>
        <binding name="beUserNameBinding" maxReceivedMessageSize="64000000">
          <security mode="TransportWithMessageCredential">
              <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" algorithmSuite="Default" />
          </security>
          </binding>
          </wsHttpBinding>
          <basicHttpBinding>
            <binding name="beBasic">
              <security mode="TransportWithMessageCredential">
                <transport/>
                <message clientCredentialType="UserName" />
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
<behavior name="beUserNameBehavior">
          <!--<serviceThrottling maxConcurrentCalls="100"/>-->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceCredentials>
            <serviceCertificate findValue="00d9ac90cd9f111398" storeLocation="LocalMachine"
              storeName="My" x509FindType="FindBySerialNumber" />
            <userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="BEAPI.Code.CallerAuthentication, BEAPI" />
          </serviceCredentials>
        </behavior>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...