2016-12-04 64 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那样完成,所以我确信它的工作原理。