首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >404接口调用错误

404接口调用错误
EN

Stack Overflow用户
提问于 2016-10-25 01:47:58
回答 2查看 506关注 0票数 1

我在这里使用微软asp.net identity tutorial示例应用程序,直到我对项目所需的功能感到满意为止。我需要有一个API,我可以从一个单独的MVC web应用程序调用,以对本地sql服务器进行身份验证/授权,并将登录凭据从web应用程序传递到api,以获得头令牌等。然后,我需要能够检查令牌,以获取数据或将数据保存回数据库的任何请求。

我在示例解决方案中添加了一个web应用程序项目,它只是一个带有按钮和一些jquery的表单,用于捕获被单击的提交按钮:

代码语言:javascript
复制
$(document).ready(function () {

    var register = function() {
        var dataa = {
            Email: "password@host.com",
            Password: "password",
            ConfirmPassword: "password"
        };

        $.ajax({
            type: 'POST',
            url: '/api/Account/Register',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(dataa)
        });
        return false;
    }

    $('#btnRegister').click(register);
});

下面是api本身的控制器:

代码语言:javascript
复制
[Authorize]
[EnableCors("*","*","*")]
[RoutePrefix("api/Account")]
public class AccountController : ApiController
{
    [AllowAnonymous]
    [Route("Register")]
    [HttpPost]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };

        IdentityResult result = await UserManager.CreateAsync(user, model.Password);

        if (!result.Succeeded)
        {
            return GetErrorResult(result);
        }

        return Ok();
    }
}

当我试图调用http://localhost:35714/api/Account/Register上的注册函数时,我在浏览器中得到了一个404错误(jquery-1.10.2.js:8720POST API404(未找到))。我如何从前端访问api函数,这个调用可以从我的web应用控制器进行,还是应该在客户端进行?

添加Microsoft.aspnet.cors和microsoft.aspnet.webapi.cors,将config.EnableCors()添加到webapiconfig.cs,并将EnableCors添加到从apicontroller继承的帐户控制器。

EN

回答 2

Stack Overflow用户

发布于 2016-10-25 03:39:46

您需要在您的接口方法中添加HttpPost属性:

代码语言:javascript
复制
[AllowAnonymous]
[Route("Register")]
[System.Web.Http.HttpPost]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
    ...
票数 0
EN

Stack Overflow用户

发布于 2016-10-25 19:40:06

尝尝这个。

代码语言:javascript
复制
$(document).ready(function () {
    var register = function() {
        var dataa = {
            Email: "password@host.com",
            Password: "password",
            ConfirmPassword: "password"
        };

        $.ajax({
            type: 'POST',
            url: '/api/Account/Register',
            contentType: 'application/json; charset=utf-8',
            data: {model: JSON.stringify(dataa)}
        });
        return false;
    }

    $('#btnRegister').click(register);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40224447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档