您好,我正在尝试将一些数据发布到我的 WebAPI,但是出现错误“无法加载资源:服务器响应状态为 405(方法不允许)”
这是我的 Angular 调用:
var req= {
url: appSettings.basePath + '/api/Location/PostSearch',
headers: { 'Content-Type': 'application/json' },
//datatype: 'Json',
data: SearchInfo,
method: 'POST'
}
return $http(req);
我的 API:
public int PostSearch(Search Obj)
{
Obj.Location = ReplaceDefaultValuesWithBlank(Obj.Location);
Obj.Sublocation = ReplaceDefaultValuesWithBlank(Obj.Sublocation);
Obj.PublicationCategory = ReplaceDefaultValuesWithBlank(Obj.PublicationCategory);
Obj.PublicationName = ReplaceDefaultValuesWithBlank(Obj.PublicationName);
int IsAdded = Db.USP_SaveSearch(Obj.SSO ?? "", Obj.SearchName ?? "", Obj.Location ?? "", Obj.Sublocation ?? "", Obj.PublicationCategory ?? "", Obj.PublicationName ?? "", Obj.FileNameFilterText ?? "", Obj.Content ?? "", Obj.DateRange ?? "");
return IsAdded;
}
不确定是什么问题,Call 在 IE 上工作正常但在 Chrome/FireFox 上不工作,
我没有看到 CORS 有任何问题,因为“GET”工作得很好,这是否与我在 webAPI 中引入的自定义路由有关
WebAPIConfig.cs:
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApiWithAction",
routeTemplate: "Api/{controller}/{action}"
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
请帮助我,我花了很多时间进行故障排除仍然卡住了。
最佳答案
在 OPTIONS 上获得 405:Deduction-> OPTIONS 请求('Preflight')仅使用 POST 发送 CORS 请求。这很可能是 CORS 问题。 – Marvin Smit 昨天
关于angularjs - Angular JS-$Http Post 不适用于 chrome/FireFox,但 $http.get 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32047272/