连接到在线版本时,您必须提供设备凭据和用户凭据。就是这样(Windows live 身份验证方案和所有。)
编辑
经过一番研究,我仍然没有找到关于为什么会这样的官方文档。通常,在 MSDN 论坛上,这是为了将设备标识与 windows live 相关联。也许这是为了让微软可以跟踪哪些工作站正在使用 CRM?也许它可以通过限制哪些机器身份可以使用某些帐户连接到 CRM,从而使他们能够在某些时候增强安全性。也许以上所有/都不是。
OrganizationServiceProxy
除了推测之外,根据我的经验,如果没有针对 CRM 进行身份验证的设备凭据(即通过构造函数或 IServiceManagment 实现使用的身份验证过程) ,我无法执行成功的查询。
下面,您将找到一些我用来执行此操作的旧代码。我现在建议使用@Jason Lattimer 提到的连接字符串。如果您需要处理更多并行性,请考虑使用IServiceManagement<IOrganizationService>
.
var reader = new AppSettingsReader();
//instatantiate credential class and populate values
var cc = new ClientCredentials();
cc.UserName.UserName = reader.GetValue("WLID", typeof(string)).ToString();
cc.UserName.Password = reader.GetValue("WLPS", typeof(string)).ToString();
//repeat for device credentials
var deviceCredentials = new ClientCredentials();
deviceCredentials.UserName.UserName = reader.GetValue("deviceWLID", typeof(string)).ToString();
deviceCredentials.UserName.Password = reader.GetValue("deviceWLPS", typeof(string)).ToString();
//create a uri for the organization service location
#if DEBUG
var orgServiceUri = new Uri(reader.GetValue("CrmNonProductionUri", typeof(string)).ToString());
#else
Uri orgServiceUri = new Uri(reader.GetValue("CrmProductionUri", typeof(string)).ToString());
#endif
OrganizationServiceProxy retval = new OrganizationServiceProxy(orgServiceUri, null, cc, deviceCredentials);
retval.EnableProxyTypes();
所以,最后,我只使用一个配置文件来存储构建我的凭据和 uri 所需的各种值(对于两种环境。)