После переписывания нашей старой веб-службы 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>