2017-07-28 121 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請求。 –

相關問題