我正在尝试从Microsoft Dynamics CRM数据库中检索数据。为了获得LINQ功能,我应用了crmsvcutil来生成数据上下文类。以下是我使用的命令行
crmsvcutil /connectionString:"Authentication Type=SPLA; Server= http://our-crm.com; User ID=user; Password=pass" /namespace:Stub.Xrm /dataContextPrefix:MyCorp /out:Xrm.cs
运行命令时,我得到了
Unhandled Exception: System.Net.WebException: The request failed with HTTP status 401: Unauthorized.
错误。通过使用user / pass来评估CRM,我能够访问http://our-crm.com。我怀疑serer的URL是问题所在,但我不确切知道应该使用哪一个。
我使用的CRM版本是4.0
更新2011年5月19日: 我将连接字符串更改为
crmsvcutil /connectionString:"Authentication Type=AD; Server= http://our-crm.com/CRM; User ID=domain\user; Password=pass" /namespace:Stub.Xrm /dataContextPrefix:MyCorp /out:Xrm.cs
现在我要
了Unhandled Exception: System.ApplicationException: 0x80040220
SecLib::CheckPrivilege failed. Returned hr = -2147220960, User: f26255aa-997a-e011-b1ff-0050569e0924, PrivilegeId: a33
11f47-2134-44ee-a258-6774018d4bc3
这是否意味着我没有足够的权限来检索WSDL信息?但是我能够使用浏览器来获取http://our-crm.com/mscrmservices/2007/CrmServiceWsdl.aspx,并且我能够使用相同的凭证将Web引用添加到WebService。
答案 0 :(得分:0)
如果您使用当前用户的凭据访问Dynamics CRM OnPremise,则必须将Integrated
指定为身份验证类型。
因此,您的连接字符串应为
/connectionString:"Authentication Type=Integrated; Server= http://our-crm.com;
如果您必须指定特定用户,则必须使用AD
/connectionString:"Authentication Type=AD; Server= http://our-crm.com; User ID=user-domain\user-name; Password=user-password