Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Dynamics CRM中未经授权_C#_Dynamics Crm_Dynamics Crm 4_Crm_Microsoft Dynamics - Fatal编程技术网

C# 在Dynamics CRM中未经授权

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

我正在尝试从CRM 4.0检索联系人列表,但身份验证出现问题。根据我所读的内容,列出所有clinet的方法是解析从ExportAllXmlRequest返回的XML

问题是,当我浏览到时,我得到一个401.2未经授权且没有验证提示。如果我通过VisualStudio添加web引用,我会得到一个不接受我的凭据的密码提示。我也尝试过用以下代码进行身份验证,但都不起作用。服务器上都启用了Windows身份验证和匿名身份验证

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