Angular JS- $ Http Post没有使用chrome / FireFox,但$ http.get工作正常

时间:2015-08-17 09:45:03

标签: angularjs http post asp.net-web-api

您好我正在尝试将一些数据发布到我的WebAPI,但是收到错误"无法加载资源:服务器响应状态为405(方法不允许)"

这是我的角色呼叫:

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 }
            );

请帮我解决,我已经花了很多时间进行故障排除仍然卡住了。

1 个答案:

答案 0 :(得分:0)

在选项上获得405:扣除 - > OPTIONS请求('Preflight')仅发送带有POST的CORS请求。很可能这是一个CORS问题。 - 昨天Marvin Smit