I am trying to write a program that simply connects up to a GP WebService and invokes it’s GetCustomerList() method to get customers from Great Plains. The code I am outlining below is an duplication of what I was able to find in the documentation, however, when I run it I am getting a SoapException. I am not sure if I am missing credentials (eg. username and password) or if I am even invoking this properly. I believe that I have the Security settings set correctly in the Dynamics Security Console, but I am not 100% sure or if there is anything else I need to configure. Any help would be greatly appreciated.
public IList<string> GetCustomerNames()
{
//Added a ServiceReference to the actual WebService which appears to be working
var service = new DynamicsGPClient();
var context = new Context();
var customerKey = new CustomerKey();
var companyKey = new CompanyKey();
//Trying to load the test data
companyKey.Id = (-1);
context.OrganizationKey = (OrganizationKey)companyKey;
//Trying to load the test data
customerKey.Id = "AARONFIT0001";
var customers = service.GetCustomerList(new CustomerCriteria(), context);
return customers.Select(x => x.Name).ToList();
}
Sounds like a security issue … are you getting a specific error message … that might be helpful …
Also found this …
It sounds to me like you need a Windows App Pool Identity on your
webservice. Right now you have the IIS Security set to “anonymous”, so the
clients aren’t required to pass the credentials when they call your methods.
You’ll need to turn that off and run your app pool as a windows account. Once
you’ve got that working, you can choose if you want to just add that one App
Pool identity into the security for webservices, and have all the operations
done as that account (poor security), or, in your wrapper, you could use the
HTTP User’s context identity, and set it to the “WorkOnBehalfOf” property for
the GP WebService call you’re actually using.
You’ll have to give the App
Pool identity “WorkOnBehalfOf” permission in the web service security
console, and then whichever users you want to call the webservice. This keeps
the security model intact, and you’re authorizing that the users calling the
wrapped webservice actually do have permission to call the original GP
Webservice methods. (This is how Business Portal forwards requests to the
webservices.)
https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.greatplains/W7gAo_zXit8