在使用KendoDataSource期间从LocalHost到同一域MVC控制器的Ajax调用

在使用KendoDataSource期间从LocalHost到同一域MVC控制器的Ajax调用,ajax,asp.net-mvc,kendo-ui,Ajax,Asp.net Mvc,Kendo Ui,我正在尝试从位于我的域中的IIS服务器上的MVC控制器访问数据。我犯了这个错误 "No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:22205' is therefore not allowed access. " 这是我的ajax调用: binDropDownDataSource:new kendo.data.DataSource({

我正在尝试从位于我的域中的IIS服务器上的MVC控制器访问数据。我犯了这个错误

"No 'Access-Control-Allow-Origin' header is present on the requested resource.
 Origin 'http://localhost:22205' is therefore not allowed access. " 
这是我的ajax调用:

binDropDownDataSource:new kendo.data.DataSource({
自动绑定:错误,
是的,
数据类型:“json”,
跨域:是的,
运输:{
阅读:{
cache:false,
//url:“/LogisticsWebApp/Requisitions/GetBins”,如果未标记,则此选项有效
url:“https://www.MyDomain.com/LogisticsWebApp/requisitions/getsites",
xhrFields:{
证书:正确
},
数据:函数(){
{
站点代码:viewModel.site.siteCode,
商店代码:viewModel.binShopBlock.shopCode
};
}
}
}
})
这是我的控制器:

publicJSONResult GetBins(字符串siteCode,字符串shopCode)
{
var lookups=新查找();
var data=lookups.GetBins(站点代码、商店代码);
返回Json(数据,JsonRequestBehavior.AllowGet);
}   

我希望能够使用一个应用程序作为我的数据层,但需要能够针对它进行开发

如果此特定方法需要它,可以将
GetBins
操作更改为:

public JsonResult GetBins(string siteCode, string shopCode)
{
    HttpContext.Response.AddHeader("Access-Control-Allow-Origin", "*");
    var lookups = new Lookups();
    var data = lookups.GetBins(siteCode,shopCode);
    return Json(data, JsonRequestBehavior.AllowGet);
} 
编辑

如果需要从控制器之外的方法执行此操作,则必须使用:

HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
添加标题(“访问控制允许来源”,“*”)以及标题(“访问控制允许标题”,“X-request-With”)


或者@alan此评论与您的问题无关,但您的
数据
属性是否正确?我一直想知道这个函数应该做什么,因为它不返回任何东西…@Groyoh,数据函数是用来传递参数的。我还没有弄清楚它和参数映射函数之间的区别,它们似乎都工作得很好。我尝试了这个,但在“上下文”下得到了一个红色的曲线,表示我缺少一个程序集或引用。你知道是哪一个吗?看来我的回答错了。我已经编辑过了。如果仍然找不到
HttpContext
,请在类中尝试导入
System.Web.HttpContext
,在控制器中尝试导入
System.Web.HttpContextBase
。如果仍然无法工作,请检查是否正确引用了
System.Web.dll
程序集。
System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*"); 
System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "X-Requested-With");