CloseQuoteRequest抛出异常

时间:2018-08-20 22:25:40

标签: c# dynamics-crm

我正在尝试使用C#CloseQuoteRequest关闭MSCRM中的报价。

CloseQuoteRequest closeQuoteRequest = new CloseQuoteRequest()
{
    QuoteClose = new QuoteClose()
    {
        QuoteId = quote.ToEntityReference(),
        Subject = "Quote Close " + DateTime.Now.ToString(),
    },
    Status = new OptionSetValue(-1),
    RequestName = "CloseQuote",
};
Service.Execute(closeQuoteRequest);

我遇到了错误;

  

格式化程序尝试反序列化消息时引发了异常:   尝试反序列化参数时出错   http://schemas.microsoft.com/xrm/2011/Contracts/Services:request。的   InnerException消息为“第1行的位置711错误。”元素   'http://schemas.datacontract.org/2004/07/System.Collections.Generic:value'   包含来自映射到名称的类型的数据   'CRM.Entities.Entities:QuoteClose'。反序列化器不知道   映射到该名称的任何类型。考虑更改   DataContractResolver上ResolveName方法的实现   返回名称“ QuoteClose”和名称空间的非空值   “ CRM.Entities.Entities”。”。请参阅InnerException了解更多信息   详细信息。

我没有内在的例外。

3 个答案:

答案 0 :(得分:0)

MSDN中的代码示例没有设置RequestName = "CloseQuote"属性,因为它不需要。删除它。

// Close the quote
CloseQuoteRequest closeQuoteRequest = new CloseQuoteRequest()
{
    QuoteClose = new QuoteClose()
    {
        QuoteId = closeQuote.ToEntityReference(),
        Subject = "Quote Close " + DateTime.Now.ToString()
    },
    Status = new OptionSetValue(-1)
};
_serviceProxy.Execute(closeQuoteRequest);
  

RequestName
  获取或设置请求的名称。必需,但由派生类提供。(继承自OrganizationRequest。)

     

状态
  Status属性对应于Quote.StatusCode属性。在Microsoft Dynamics 365应用程序中将其显示为“状态原因”。如果将此属性的值设置为-1,则系统将设置相应的相应状态值。

答案 1 :(得分:0)

我不知道为什么会这样,但是在QuoteClose实体中添加.ToEntity()可行。

color

答案 2 :(得分:0)

WinQuoteRequest winQuoteRequest = new WinQuoteRequest();
Entity wonQuoteClose = new Entity("quoteclose");
wonQuoteClose.Attributes["quoteid"] = new EntityReference("quote", id);
wonQuoteClose.Attributes["subject"] = "Quote Close" + DateTime.Now.ToString();
winQuoteRequest.QuoteClose = wonQuoteClose;
winQuoteRequest.Status = new OptionSetValue(-1);
service.Execute(winQuoteRequest);