Dynamics 365 CRM:突然出现JS错误

6
在本地使用 Dynamics 365 版本1612(8.2.2.112)。在报价表单上,我修改了由激活报价调用的操作,以创建自定义实体(Deal)记录,然后导航到新创建的记录。这在所有浏览器中都可以正常工作,直到两周前。现在,在IE中无法工作(客户端首选-但在Chrome,Firefox和Edge中可以工作),并且我只得到一些通用的JSON错误。 "无效的JSON。JSON内容中未识别出令牌。"
无论我添加多少调试,似乎都没有任何明确性。我在XMLHttpRequest中获得了400错误 https://xxx.xxx.com/CRM/api/data/v8.2/quotes(04224AF9-DD70-E811-8123-000D3A02DFDB)/Microsoft.Dynamics.CRM.new_SubmitQuote 完整的响应正文如下所示。
完整的JSON如下所示。
这是调用动作(new_SubmitQuote)创建新的交易实体记录并导航到该新记录的JS代码。
n.xxx_submitQuote=function(n){
    r.showXrmProgressIndicator("Submitting, please wait...");
     u.executeBoundAction("quotes",n,"new_SubmitQuote").then(function(n){
        t.Utility.openEntityForm("sut_deal",n.sut_dealid,null,null)}).catch(r.logError).then(function(){
            r.closeXrmProgressIndicator()
        })
    }

任何想法、想法或建议都将不胜感激。我陷入了困境。
谢谢, Noah
JSON

{  
   "@odata.context":"https://xxx.xxx.com/CRM/api/data/v8.2/$metadata#quotes/$entity",
   "@odata.etag":"W/\"54328330\"",
   "new_spread":95903.0200,
   "new_amount10percent":310777.7900,
   "new_revenue10":777.79,
   "new_paymentcount_date":"2018-06-19T00:53:29Z",
   "_pricelevelid_value":"bfa9dc95-dbcd-e611-80d7-000d3a01f3fc",
   "exchangerate":1.0000000000,
   "totaldiscountamount":0.0000,
   "name":"100026",
   "totallineitemamount":0.0000,
   "_transactioncurrencyid_value":"9107a2c3-bab1-e611-80d2-000d3a01f3fc",
   "_owninguser_value":"a9c113ac-d532-e811-8119-000d3a02dfdb",
   "totalamount":0.0000,
   "_ownerid_value":"a9c113ac-d532-e811-8119-000d3a02dfdb",
   "versionnumber":54328330,
   "quoteid":"04224af9-dd70-e811-8123-000d3a02dfdb",
   "totallineitemdiscountamount":0.0000,
   "timezoneruleversionnumber":0,
   "totalamountlessfreight_base":0.0000,
   "statuscode":1,
   "createdon":"2018-06-15T20:52:12Z",
   "totaltax_base":0.0000,
   "totallineitemamount_base":0.0000,
   "totalamount_base":0.0000,
   "modifiedon":"2018-06-15T20:53:23Z",
   "totaltax":0.0000,
   "totaldiscountamount_base":0.0000,
   "quotenumber":"QUO-38015-F3D2B8",
   "_modifiedby_value":"a9c113ac-d532-e811-8119-000d3a02dfdb",
   "revisionnumber":0,
   "_createdby_value":"a9c113ac-d532-e811-8119-000d3a02dfdb",
   "pricingerrorcode":0,
   "totallineitemdiscountamount_base":0.0000,
   "statecode":0,
   "_owningbusinessunit_value":"1a1ad33f-bab1-e611-80d2-000d3a01f3fc",
   "willcall":false,
   "_customerid_value":"7a60bf77-dd70-e811-8123-000d3a02dfdb",
   "billto_addressid":null,
   "discountpercentage":null,
   "shipto_composite":null,
   "onholdtime":null,
   "billto_line2":null,
   "closedon":null,
   "paymenttermscode":null,
   "freightamount_base":null,
   "_modifiedonbehalfby_value":null,
   "freightamount":null,
   "billto_city":null,
   "_campaignid_value":null,
   "shipto_line1":null,
   "_contactid_value":null,
   "requestdeliveryby":null,
   "freighttermscode":null,
   "billto_stateorprovince":null,
   "effectivefrom":null,
   "shipto_line3":null,
   "discountamount_base":null,
   "billto_line3":null,
   "shipto_telephone":null,
   "shipto_contactname":null,
   "expireson":null,
   "shipto_freighttermscode":null,
   "shipto_line2":null,
   "shipto_addressid":null,
   "_opportunityid_value":null,
   "shipto_fax":null,
   "shipto_country":null,
   "shipto_stateorprovince":null,
   "billto_composite":null,
   "billto_line1":null,
   "billto_contactname":null,
   "billto_telephone":null,
   "shipto_city":null,
   "_owningteam_value":null,
   "discountamount":null,
   "description":null,
   "shippingmethodcode":null,
   "processid":null,
   "_accountid_value":null,
   "_slainvokedid_value":null,
   "stageid":null,
   "traversedpath":null,
   "billto_postalcode":null,
   "utcconversiontimezonecode":null,
   "shipto_name":null,
   "overriddencreatedon":null,
   "billto_fax":null,
   "effectiveto":null,
   "importsequencenumber":null,
   "_new_createdby_value":null,
   "shipto_postalcode":null,
   "lastonholdtime":null,
   "billto_name":null,
   "_slaid_value":null,
   "_createdonbehalfby_value":null,
   "billto_country":null,
}

错误

    {
    "error":{
    "code":"","message":"Invalid JSON. A token was not recognized in the JSON content.",
    "innererror":{
    "message":"Invalid JSON. A token was not recognized in the JSON content.","type":"Microsoft.Crm.CrmHttpException","stacktrace":"
    at Microsoft.Crm.Extensibility.OData.CrmODataUtilities.ValidateInputParameters(ModelStateDictionary controllerModelState)
    at Microsoft.Crm.Extensibility.OData.ActionController.PostBoundAction(String entityName, String key, String operationName, ODataUntypedActionParameters parameters)
    at lambda_method(Closure , Object , Object[] )
    at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)
    at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
    --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at System.Web.Http.Controllers.ActionFilterResult. <ExecuteAsync>d__2.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
    }
    }
    }

1个回答

1
也许是因为你正在使用JS promises,而一些IE版本可能不支持该功能,请参考mozilla.orgcaniuse.com。但是,您可以尝试使用带有回调参数的常规操作调用来打开实体表单进行解决,可查看下面的示例,并考虑更改API版本。
function ExecuteAction(entitySet, entityId, actionName, Parameters, successCallBack, ErrorCallBack, isAsync) {
debugger;
var clientUrl = Xrm.Page.context.getClientUrl();
var isAsync = isAsync || false;
var result = {};
entityId = entityId.replace('{', '').replace('}', '');
var req = new XMLHttpRequest();
req.open("POST", clientUrl + "/api/data/v8.1/" + entitySet + "(" + entityId + ")/Microsoft.Dynamics.CRM." + actionName, isAsync);
req.setRequestHeader("Accept", "application/json");
req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
req.setRequestHeader("OData-MaxVersion", "4.0");
req.setRequestHeader("OData-Version", "4.0");
req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
        req.onreadystatechange = null;
        var s = this.status;
        if (s >= 200 && s < 300) { //success 
            result.status = true;
            result.data = this.response;
            if (successCallBack) 
                successCallBack();

        } else if (s >= 400 && s < 500) { // client error 
            result.status = false;
            console.log("Client error");
            result.error = JSON.parse(this.response).error;
            console.log(result.error);
            console.log(result.error.message);
            if (ErrorCallBack)
                ErrorCallBack(result);


        } else if (s >= 500) { //server error 
            result.status = false;
            console.log("Server error");
            result.error = JSON.parse(this.response).error;
            console.log(result.error);
            console.log(result.error.message);
            if (ErrorCallBack) 
                ErrorCallBack(result);

        }

if (Parameters == "" || Parameters == null) {
    req.send();
} else {
    req.send(JSON.stringify(Parameters));
}

return result;

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接