2016-12-04 32 views
0

我開發了一個使用CRM 2015 SDK(v7.1.2)的應用程序。我想ExecuteTransactionRequest發送的CRM 2名的請求,但我得到了一個錯誤:在crm 2015中執行多次交易錯誤請求

The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter 
http://schemas.microsoft.com/xrm/2011/Contracts/Services:request. The 
InnerException message was 'Error in line 1 position 451. Element 
'http://schemas.microsoft.com/xrm/2011/Contracts/Services:request' 
contains data from a type that maps to the name 
'http://schemas.microsoft.com/xrm/2011/Contracts:ExecuteTransactionRequest'. 
The deserializer has no knowledge of any type that maps to this name. 
Consider changing the implementation of the ResolveName method on your 
DataContractResolver to return a non-null value for name 
'ExecuteTransactionRequest' and namespace 
'http://schemas.microsoft.com/xrm/2011/Contracts'.' 

this is my applicaion's picture

我用這個鏈接:https://msdn.microsoft.com/en-us/library/mt634414.aspx

請幫幫我!在

+0

請顯示更多代碼。我們無法看到您嘗試創建的實體,因此我們很難嘗試幫助 – jasonscript

+0

您是否可以在Fiddler中觀看此視頻並查看響應消息實際包含的內容?我的猜測是,這是一個HTML響應,而不是有效的SOAP/XML響應(如預期的那樣)。當服務器拋出某些錯誤,存在URL問題,認證問題等時可能會發生這種情況。 – Nicknow

+0

hi jasonscript and Nicknow。我找到了我的答案。 – arioamir

回答

0

參見「在一個單一的數據庫事務執行的消息」: https://msdn.microsoft.com/en-us/library/gg328075(v=crm.7).aspx

什麼你已經發現的是,這個消息是在客戶端SDK,但是這並不意味着它也是在服務器上。你有SDK 7.1,但是在你有7.0的服務器上 - 進入你的CRm安裝目錄(可能是C:\Program Files\Microsoft Dynamics CRM),轉到Server/bin並檢查Microsoft.Xrm.Sdk.dll的版本。它會像7.0.1一樣,並且不包含此消息。 不同意MS在線文檔具有誤導性,因爲它顯示了CRM 2015的此消息,但不幸的是,它在那裏不可用。 至於交易方面,您可以像我們在CRM 2015更新1之前所做的那樣執行此操作 - 使用CRM命令模式。創建一個實體(稱之爲Command或其他)並創建一個在Create上運行的插件(例如,可以有很多方法,但這是最簡單的方法)。

您在階段20和40中的插件中執行的所有操作都將在事務中運行,因此您可以將此邏輯放入此插件中。當然,這個「Command」實體可以有一些參數傳遞給你,所以你可以通過不同的邏輯爲你傳遞給這個實體的不同參數。希望對你來說很清楚。這不像ExecuteTransaction那麼優雅,但它的工作非常好,它必須像許多版本的CRM那樣完成,所以我確信它的工作原理。