C# 在Dynamics CRM中未经授权
我正在尝试从CRM 4.0检索联系人列表,但身份验证出现问题。根据我所读的内容,列出所有clinet的方法是解析从ExportAllXmlRequest返回的XML 问题是,当我浏览到时,我得到一个401.2未经授权且没有验证提示。如果我通过VisualStudio添加web引用,我会得到一个不接受我的凭据的密码提示。我也尝试过用以下代码进行身份验证,但都不起作用。服务器上都启用了Windows身份验证和匿名身份验证C# 在Dynamics CRM中未经授权,c#,dynamics-crm,dynamics-crm-4,crm,microsoft-dynamics,C#,Dynamics Crm,Dynamics Crm 4,Crm,Microsoft Dynamics,我正在尝试从CRM 4.0检索联系人列表,但身份验证出现问题。根据我所读的内容,列出所有clinet的方法是解析从ExportAllXmlRequest返回的XML 问题是,当我浏览到时,我得到一个401.2未经授权且没有验证提示。如果我通过VisualStudio添加web引用,我会得到一个不接受我的凭据的密码提示。我也尝试过用以下代码进行身份验证,但都不起作用。服务器上都启用了Windows身份验证和匿名身份验证 CrmService svc = new CrmService(); // t
CrmService svc = new CrmService();
// this doesn't work
svc.UseDefaultCredentials = true;
// this doesn't work either
svc.Credentials = new NetworkCredential("myuser", "password", "mydomain");
svc.Credentials= System.Net.CredentialCache.DefaultCredentials;
ExportAllXmlRequest request = new ExportAllXmlRequest();
ExportAllXmlResponse response = (ExportAllXmlResponse)svc.Execute(request);
string resp=string.Empty;
using (StreamReader reader = new StreamReader(response.ExportXml)) {
resp = reader.ReadToEnd();
}
return resp;
是否有1)从CRM列出联系人的更简单方法,2)我可以做些什么来解决此身份验证问题。这绝对不是检索实体记录所需的方法。ExportAllXmlRequest将提取CRM环境的定制信息,但没有实际记录。您将需要RetrieveMultipleRequest(sdk链接:)
至于身份验证问题,您的CRM站点是否在IE中的受信任站点或intranet站点列表中?您的代码不正确。你是在把两者混为一谈 要与CRM数据交互,应使用。这类似于CRM部署的黄页
// Set up the CRM Service.
var token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = "{yourorgname}";
var service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
如果您使用的是插件或CRM在线版本,而您没有访问底层SQL数据库的权限,那么上述ckeller的答案是好的。如果这是在内部部署的安装中,并且您拥有对CRM表的SQL server访问权限,那么直接查询SQL表或视图以读取实体信息通常会更快、更直接。您只需要执行以下SQL查询,并使用SQL数据读取器或datatable读取结果-
SELECT * FROM OrgName_MSCRM.dbo.FilteredContact
我的设置设置为低安全性,但将站点添加到受信任列表似乎没有效果。
SELECT * FROM OrgName_MSCRM.dbo.FilteredContact