gpt4 book ai didi

angularjs - $http.post 的 Web API 405 错误

转载 作者:行者123 更新时间:2023-12-01 03:44:23 26 4
gpt4 key购买 nike

我在使用 $http.post 的 POST 请求中收到 405 错误。奇怪的是我在应用程序的另一个区域使用 $http.post 并且它工作得很好。

我在客户端使用 AngularJS,在服务器端使用 Web API。我已经发布了我能想到的所有相关信息(除了我的 web.config)。有什么很明显的东西我在这里失踪了吗?

下面的代码不起作用(抛出 405)

这是我尝试使用的 api Controller 方法:

    public async Task<IHttpActionResult> LinkLogin(string provider)
{
Account user = await _repo.FindByNameAsync(User.Identity.Name);

if (user == null)
{
return BadRequest("User does not exist!");
}

return new ChallengeResult(provider, null, "auth/Manage/LinkLoginCallback", user.Id);
}

这是我试图在客户端上实现它的方式:
var _linkLogin = function (provider) {
$http.post(serviceBase + 'auth/Manage/LinkLogin', provider).then(function (response) {
return response;
});
};

下面的代码是有效的代码

有效的 Api Controller 功能:
    // POST auth/Authorization/Register
[AllowAnonymous]
[Route("Register")]
public async Task<IHttpActionResult> Register(UserModel userModel)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

IdentityResult result = await _repo.RegisterUser(userModel);

IHttpActionResult errorResult = GetErrorResult(result);

if (errorResult != null)
{
return errorResult;
}

return Ok();
}

从客户端调用它:
var _saveRegistration = function (registration) {

_logOut();

return $http.post(serviceBase + 'auth/Authorization/register', registration).then(function (response) {
return response;
});

};

这是我的 web api 配置:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "AuthenticationApi",
routeTemplate: "auth/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);

config.Routes.MapODataServiceRoute("ODataRoute", "api", GenerateEdmModel());

var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().First();
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
}

private static IEdmModel GenerateEdmModel()
{
ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

return builder.GetEdmModel();
}
}

现在我已经尝试了许多在网上发布的不同解决方案都无济于事,以下是我尝试过的事情的链接:

Web api not supporting POST method

Web API Put Request generates an Http 405 Method Not Allowed error

http://blog.dontpaniclabs.com/post/2013/01/23/That-Pesky-Requested-Resource-Does-Not-Support-HTTP-Method-POST-Error-When-Using-MVC-Web-API

最佳答案

我讨厌回答我自己的问题。如果其他人遇到此问题,那是因为您正在尝试向 Web api Controller 发送一个简单的字符串值。

我成功地使用了这个解决方案:http://jasonwatmore.com/post/2014/04/18/Post-a-simple-string-value-from-AngularJS-to-NET-Web-API.aspx

如果链接已失效,您只需在 POST 请求中将字符串值用双引号括起来,如下所示:

$http.post(Config.apiUrl + '/processfile', '"' + fileName + '"');

关于angularjs - $http.post 的 Web API 405 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com