拒绝设置不安全的标头“连接” AjaxPro AjaxMethod

时间:2018-12-05 16:01:27

标签: jquery asp.net ajax ajaxpro

我正在使用AjaxPro。致电GetReturns()时出现此错误:

  

拒绝设置不安全的标头“连接”

Report.Areas_Report.GetReturns(30, aoData, (response) => {
  if (response.error == null) {
    var myObject = response.value;
    fnCallback(myObject);
  } else {
    $.growl.error({ 
      message: "An error occurred. Please try again." 
    });
  }
  $(_overlayElementId).remove();
});
[AjaxMethod]
public DataTableResult GetReturns(int days, List<DataTableAjaxPostModel> model = null)
{
  var dataTableRequest = DataTableModelBinder.FilterDateTableRequest(model);
  var result = reportsService.GetReturns(warehouseId, days, dataTableRequest);
  return result;
}

1 个答案:

答案 0 :(得分:0)

这是由Chrome中的更新引起的问题。不幸的是,AjaxPro构建尚未更新以反映这一点。仍然有一种简单的方法可以解决该问题。您只需要拥有自己的AjaxPro版本,然后从代码中删除有问题的行即可。

您可以从https://github.com/michaelschwarz/Ajax.NET-Professional从Github下载AjaxPro代码库。您需要选择以zip格式下载,提取文件,将项目复制到解决方案中,然后将Web项目对AjaxPro的引用更改为来自这个新项目。

接下来,在该项目的根目录中打开名为core.js的文件,并转到445行。导致问题的整个块都需要删除或注释掉。

    if(!MS.Browser.isIE) {
        this.xmlHttp.setRequestHeader("Connection", "close");
    }

保存文件,构建,错误将消失。请注意,您不需要上传core.js文件,因为它是嵌入式资源,只需将新的AjaxPro.dll放到网上即可。

还要注意一点,尽管该项目是.net Framework 2+的正确版本,但该项目的生成方式是AjaxPro.dll,而不是AjaxPro.2.dll的较新名称-您可以更改生成名称或仅更改名称在您的web.config文件中。例如

    <sectionGroup name="ajaxNet">
        <section name="ajaxSettings" type="AjaxPro.AjaxSettingsSectionHandler,AjaxPro.2" requirePermission="false" restartOnExternalChanges="true"/>
    </sectionGroup>

将成为

    <sectionGroup name="ajaxNet">
        <section name="ajaxSettings" type="AjaxPro.AjaxSettingsSectionHandler,AjaxPro" requirePermission="false" restartOnExternalChanges="true"/>
    </sectionGroup>

...以及配置文件中提及AjaxPro.2的其他所有地方都需要更改为AjaxPro