2

尝试连接到 CRM 2011 Web 服务时出现意外错误。这是背景:

连接字符串(已删除敏感信息):"ServiceUri=https://crmdomain.com/OrgName/XRMServices/2011/Organization.svc; Url=https://crmdomain.com/OrgName; Username=appusername; Password=hidden"/>

创建连接如下:

  1. 将 conn 字符串解析成 CRMConnection:(var conn = Microsoft.Xrm.Client.CrmConnection.Parse(connString);此时,对象中的属性CrmConnection看起来是正确的,包括 ClientCredentials)
  2. 创建组织代理:var orgProxy = new OrganizationServiceProxy(conn.ServiceUri, conn.HomeRealmUri, conn.ClientCredentials, conn.DeviceCredentials);
  3. 创建数据上下文:var context = new MyContext(orgProxy);

此时,从 中检索任何数据时context,会发生以下 WCF 异常:

System.ServiceModel.Security.SecurityNegotiationException 发生 Message=调用者未通过服务的身份验证。 Source=mscorlib StackTrace:服务器堆栈跟踪:在 System.ServiceModel.Security.IssuanceTokenProviderBase'1.DoNegotiation(TimeSpan timeout) at System.ServiceModel.Security.SspiNegotiationTokenProvider.OnOpen(TimeSpan timeout) at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(时间跨度超时)

... 等等。

InnerException显示IsSenderFault=TrueIsPredefinedFault=True。_

这里发生了什么?

4

2 回答 2

0

我找到了解决方案。首先请下载 CRM SDK 2011 的 RTW 版本。

连接代码将是:

public static IOrganizationService Service() 
{
    ClientCredentials Credentials = new ClientCredentials(); 
    Credentials.Windows.ClientCredential.UserName ="<username>"; 
    Credentials.Windows.ClientCredential.Password ="<password>"; 

    //This URL needs to be updated to match the servername and Organization for the environment.
    Uri OrganizationUri = new Uri("http://<server name>/<organization name>/XRMServices/2011/Organization.svc"); 
    Uri HomeRealmUri = null; 

    //OrganizationServiceProxy serviceProxy; 
    using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, HomeRealmUri, Credentials, null)) 
    {
        IOrganizationService service = (IOrganizationService)serviceProxy; 
        return service; 
    }
}

给你...

干杯! 享受编码。

于 2011-06-23T12:44:07.353 回答
0

您可能希望使用 CRM 跟踪来缩小 CRM 中的确切错误范围。您可以使用专用工具激活 CRM 跟踪并搜索它以获取有关异常来源的更多详细信息。请注意,跟踪文件会很快变得非常大,因此仅在 Web 服务调用期间进行跟踪是合理的。

于 2011-05-25T08:06:25.490 回答