It took me a while to get this working because I was using the wrong endpoint, D'oh, and the wrong type of credentials, double D'oh.
In any case, here it is for posterity:
public class IFDCrmService { const string ServiceUrl = "https://{0}/XRMServices/2011/Organization.svc"; public static IOrganizationService GetIFDCrmService() { ClientCredentials credentials = new ClientCredentials(); credentials.UserName.UserName = ConfigurationManager.AppSettings["UserName"]; credentials.UserName.Password = ConfigurationManager.AppSettings["Password"]; if (ConfigurationManager.AppSettings["FQDN"] == null) { throw new ArgumentNullException("FQDN key missing."); } string fqdn = ConfigurationManager.AppSettings["FQDN"]; return new OrganizationServiceProxy(new Uri(string.Format(ServiceUrl, fqdn)), null, credentials, null); } }The relevant part of the app.config is below:
<appSettings> <add key="UserName" value="dev\crmapppool" /> <add key="Password" value="P@55w0rd1" /> <add key="FQDN" value="crmdev.dev.com"/> </appSettings>It's always a good idea to encrypt the passwords but I won't discuss this today here.