2017-07-28 119 views
0

我正在尝试创建一个案例并将关联联系人关联到primarycontactId字段中。我正在使用备用密钥来查找联系人,如下所示。将primarycontactid关联到Case-Dynamics CRM Web API

POST https://xxxxx.crm.dynamics.com/api/data/v8.2/incidents HTTP/1.1 
Accept: application/json 
OData-MaxVersion: 4.0 
OData-Version: 4.0 
Content-Type: application/json; charset=utf-8 
Host: xxxxxx.crm.dynamics.com 
Content-Length: 161 

{ 
    "title": "case101", 
    "[email protected]": "https://xxxxx.crm.dynamics.com/api/data/v8.2/contacts(xxi_xxx='2533274975913147')" 
} 

代码如下

using (HttpClient httpClient = new HttpClient()) 
      { 
       var method2 = new HttpMethod("POST"); 
       Uri requesturi = new Uri(string.Format("{0}/api/data/v8.2/", url)); 
       httpClient.BaseAddress = requesturi; 
       httpClient.Timeout = new TimeSpan(0, 0, 4); // 10 minutes 
       httpClient.DefaultRequestHeaders.Accept.Clear(); 
       httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       result = GetS2SAccessToken(url, pwd); 
       httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result); 
       httpClient.DefaultRequestHeaders.Add("OData-MaxVersion", "4.0"); 
       httpClient.DefaultRequestHeaders.Add("OData-Version", "4.0"); 
       HttpRequestMessage request = new HttpRequestMessage(method,string.Format("contacts(xxxxx_xxxx='{0}')",xxxx.ToString())); 
       request.Content = new StringContent(props.ToString(), Encoding.UTF8, "application/json"); 
       HttpRequestMessage request2 = new HttpRequestMessage(method2, string.Format("incidents")); 
       request2.Content = new StringContent(props1.ToString(), Encoding.UTF8, "application/json"); 

       HttpResponseMessage createResponse1; 
       createResponse1 = await httpClient.SendAsync(request2); 
       return createResponse1.Content; 
     } 

但是我得到:

出现意外的错误 “” innererror “:{ ”消息“:” 发生意外错误。 “,”type“:”System.ServiceModel.FaultException。“,”type“:”System.ServiceModel.FaultException 1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Crm.Extensibility.OData.CrmODataServiceDataProvider.CreateEdmEntity(CrmODataExecutionContext context, String edmEntityName, EdmEntityObject entityObject, Boolean isUpsert)\r\n at Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]","stacktrace":" at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Create(Entity entity, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode, Dictionary 2 optionalParameters)\ r \ n at Microsoft.Crm.Extensibility.OData.CrmODataExecutionContext.Create(Entity entity)\ r \呐t Microsoft.Crm.Extensibility.OData.EntityController.PostEntitySet(String entitySetName,EdmEntityObject entityObject)\ r \

有没有人遇到过这个?

回答

0

你混淆了。验证此&更正模式名称。

事件有2个可选联系人查找&模式名称是primarycontactid & responsiblecontactid。

[email protected] 

但事件有强制性客户查找&模式名客户ID。没有这个事件不能被创建。通过这个,请求会成功。

[email protected] 
+0

当我使用customerIderror“:{ ”code“:”“,”message“:”一个未声明的属性'customerid',它只在有效负载中具有属性注释但在有效负载中没有找到属性值时,我得到以下错误。在OData中,只有声明的导航属性和声明的命名流才可以表示为没有值的属性。“,”innererror“:{ ”message“:”一个未声明的属性'customerid',它只在有效载荷中具有属性注释但没有p –

+0

任何关于如何将我的代码传递给Jobject的建议?感谢帮助! –

+0

尝试使用CRM Rest构建器构建请求 –

0

我不确定Web API是否允许通过备用密钥填充查找字段。

这两个步骤的过程应该工作...

  1. 检索联系人的使用GUID其备用钥匙
  2. 使用ID而不是替代键,填充查找即:

"[email protected]": "/contacts(F56D5D25-8B0D-E711-8104-00155D6FD705)"

+0

我也尝试使用GUID也为contactid,似乎得到相同的错误 –

+0

你在做什么语言呢?发布代码可能会有所帮助... – Aron

+0

我正在使用C#执行此操作,创建一个JObject(props1)以串入并传入HTTP请求。 –

相关问题