I’m not sure if my client consuming SOAP webservices(that worked E9) is the problem or my web.config, but I’m having problems getting SOAP working on E10. Is there a WS-Tester application for E10 like there was in E9(this would allow me to isolate the problem)?
More details on troubleshooting attempts:
Please note in E9 we used http with WSSE for authentication(WS-Security is I believe another name, username, password and nonce are passed back and forth as a handshake)
In E10 we’ve found we have WSDL files present for SOAP web services(http://serverName/dbName/Erp/BO/JobEntry.svc?wsdl) although we’ve not enabled them(in E9 we had to use the WS_configuration binary to enable each SOAP web service and configure it).
Unfortunately in trying to consume the web services using code from E9(two different apps written in PHP and node.js) we’re getting errors(Php error - Parsing WSDL: Could not find any usable binding services in WSDL). In looking on this forum I found the Epicor WCF Services Developer Guide 10.2.400 should be referenced to configure the IIS web.config file. Per the guide our system.serviceModel/bindings is correct, but our system.serviceModel/protocolMapping is incorrect. Makes sense as this is the error we’re seeing… Unfortunately if I copy / paste the configuration from the guide, IIS starts but I get an error. Please note I’m not understanding what the XML does just blindly copying/pasting it so there may be an obvious problem… This results in a runtime error when I click the .svc file, which previously provided a link to the wsdl file.
Here is my current protocolMapping section, can someone point me in the right direction?
<protocolMapping>
<remove scheme="net.tcp" />
<!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedWindows" />-->
<!--<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameSslChannel" />-->
<add scheme="net.tcp" binding="customBinding" bindingConfiguration="TcpCompressedUsernameWindowsChannel" />
<!--
<remove scheme="http" />
<add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />
<add scheme="http" binding="customBinding" bindingConfiguration="HttpBinaryUsernameSslChannel" />
<add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryUserNameChannel" />
<add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryAzureChannel"/>
<add scheme="http" binding="customBinding" bindingConfiguration="HttpsOffloadBinaryIdpChannel"/>
-->
<!--
<remove scheme="https" />
<add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryUsernameChannel"/>
<add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryAzureChannel"/>
<add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryIdpChannel"/>
<add scheme="https" binding="customBinding" bindingConfiguration="HttpsBinaryWindowsChannel"/>
<add scheme="https" binding="basicHttpBinding" bindingConfiguration="BasicHttp" />
-->
<remove scheme="http" />
<remove scheme="https" />
</protocolMapping>
Here is what the guide tells me I need(seems to be commented out):
This protocolMapping copied from the guide fails with a runtime error:
<protocolMapping>
<remove scheme="https" />
<add scheme="https" binding="basicHttpBinding" bindingConfiguration="BasicHttp" />
<remove scheme="http" />
<add scheme="http" binding="wsHttpBinding" bindingConfiguration="SOAPHttp" />
</protocolMapping>
Sorry for the overload of information - here are my bindings…
<bindings>
<!--REST/OData - Authentication: Epicor Username - Channel encrypted via https -->
<webHttpBinding>
<binding name="RestHttps" transferMode="Buffered">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
</binding>
</webHttpBinding>
<!--SOAP 1.1 - Authentication: Epicor Username - Channel encrypted via https -->
<basicHttpBinding>
<binding name="BasicHttp" maxReceivedMessageSize="2147483647">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
</binding>
</basicHttpBinding>
<!--SOAP 1.2 - Authentication: Epicor Username - Message encrypted -->
<wsHttpBinding>
<binding name="SOAPHttp" maxReceivedMessageSize="2147483647">
<security mode="Message">
<message clientCredentialType="UserName" />
</security>
<readerQuotas maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxDepth="2147483647" maxStringContentLength="2147483647" />
</binding>
</wsHttpBinding>