Hey there,
I'm hosting GP on a box running Windows Server 2012 R2. I'm trying to connect to GP Web Services, as follows:
var binding = new WSHttpBinding
{
MaxReceivedMessageSize = 999999,
Security = new WSHttpSecurity
{
Mode = SecurityMode.TransportWithMessageCredential,
Transport = new HttpTransportSecurity { ClientCredentialType = HttpClientCredentialType.None },
Message = new NonDualMessageSecurityOverHttp { ClientCredentialType = MessageCredentialType.UserName }
}
};
using (
var client = new DynamicsGPClient(binding,
new EndpointAddress("gpqa.msidata.com/.../GPService")))
{
client.ClientCredentials.UserName.UserName = "win-run28e0nts6\\Administrator";
client.ClientCredentials.UserName.Password = "%nzc(xLLx8";
var customers = client.GetCustomerList(new CustomerCriteria(), context);
}
When I run this code, I catch the following exception:
"There was no endpoint listening at gpqa.msidata.com/.../GPService that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details."
Its inner exception reads: "The remote server returned an error: (404) Not Found."
My DynamicsGP.config (in 'C:\Program Files\Microsoft Dynamics\GPWebServices\ServiceConfigs') is set up as follows:
<services>
<service name="Microsoft.Dynamics.GP.WebServices.Contract.DynamicsGP" behaviorConfiguration="GPDynamicMetadataBehavior">
<!--<endpoint address="Mex" name="http" binding="customBinding" bindingConfiguration="CustomBinding" contract="IMetadataExchange"/>-->
<endpoint address="GPService" name="GPWebService" binding="wsHttpBinding" bindingConfiguration="WSHttpBindingTargetSSLUserName" contract="Microsoft.Dynamics.GP.WebServices.Contract.IGPServices"/>
<host>
<baseAddresses>
<add baseAddress="win-run28e0nts6/.../GPService"/>
<add baseAddress="gpqa.msidata.com/.../GPService"/>
</baseAddresses>
</host>
<endpoint address="Mex" name="http" binding="customBinding" bindingConfiguration="CustomBinding" contract="IMetadataExchange"/></service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="GPWCFStaticMetadataBehavior">
<serviceThrottling maxConcurrentSessions="1024"/>
<serviceMetadata httpsGetEnabled="true" externalMetadataLocation="win-run28e0nts6/.../schemas.microsoft.com.dynamics.gp.2010.01.wsdl"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceCredentials>
<userNameAuthentication cacheLogonTokens="true"/>
</serviceCredentials>
</behavior>
<behavior name="GPDynamicMetadataBehavior">
<serviceThrottling maxConcurrentSessions="1024"/>
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceCredentials>
<userNameAuthentication cacheLogonTokens="true"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Ports 48620, 48622 and 48623 are open in the firewall, and "netstat-a" confirms that they are listening. However, "netstat-o" does not list any processes running on these ports. These URLs were reserved with netsh, according to the directions on this document:
community.dynamics.com/.../draft-web-services-steps-to-change-web-services-address-from-http-to-https-in-microsoft-dynamics-gp-2010-and-2013
Similarly, the SSL certifications have also been added to the necessary ports. (And, both the eConnect and GP Service Host services are running!)
Am I missing anything? Is there anything I need to check, or any steps I may have misunderstood?
Thanks! :-)
*This post is locked for comments