【问题标题】:Angular Posting to ASP.NET Core Web API returning failureAngular 发布到 ASP.NET Core Web API 返回失败
【发布时间】:2017-05-10 13:00:22
【问题描述】:

这是我的 web api 代码

 // POST api/Values
    [HttpPost]
    public async Task Post()
    {
        string user = new StreamReader(Request.Body).ReadToEnd();
        var cmd = new SqlCommand(
                @"insert into Users
                select *
                from OPENJSON(@user)
                WITH( Username, Password, Email, Nickname, IsActive, Activation)");
        cmd.Parameters.AddWithValue("user", user);
        await SqlCommand.ExecuteNonQuery(cmd);
    }

这是我的 Angular js 代码

data = JSON.stringify({Username: user, Password: pwd, Nickname: user, IsActive: '1', Activation: '2u4bubdub32939342'}); 
        $http.post('http://localhost:7792/api/values', data)
        .success(function(data, status, headers, config) {
            alert("success");
        })
        .error(function(data, status, headers, config) {
            alert( "failure message: " + data + " " +status+ " " +headers+ " " +config);
        });
        } catch (e) { alert(e.message); }

当我运行它时,我收到失败消息。我已经在 web apo 中启用了 COR

【问题讨论】:

  • 你使用的是哪个角度版本
  • 版本 1,获取请求有效。只有帖子
  • 错误信息是什么?此外,您的评论似乎说 url 应该是 api/todo,但您的代码正在调用 api/values。
  • 抱歉,这是个错误。我更新了代码
  • POST localhost:7792/api/values 500(内部服务器错误)VM864 注册:1 XMLHttpRequest 无法加载 localhost:7792/api/values。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost:8100' 不允许访问。响应的 HTTP 状态代码为 500。

标签: javascript asp.net angularjs


【解决方案1】:

您的 POST 方法应该采用一个参数,即用户模型,您可以通过 Angular 正确发送该参数。希望这个example可以帮到你。

【讨论】:

    【解决方案2】:

    谷歌搜索后,我在 startup.cs 中添加了 ConfigureServices(IServiceCollection services)

            services.AddCors(options =>
            {
                options.AddPolicy("CorsPolicy",
                    builder => builder.AllowAnyOrigin()
                    .AllowAnyMethod()
                    .AllowAnyHeader()
                    .AllowCredentials());
            });
    

    我还添加到 Configure(IApplicationBuilder app, .... in startup.cs

            app.UseCors("CorsPolicy");
    

    【讨论】:

    • 现在真的有效吗?您发布的 API 方法没有接受任何输入,这似乎......很奇怪。
    • 不,它没有连接,但没有插入任何东西
    • 您的 Post 方法应该采用一个参数,即用户模型,您可以通过 Angular 正确发送该参数。希望这个例子可以帮助到你:andrewlock.net/model-binding-json-posts-in-asp-net-core
    • 我还是不明白
    • 然后学习一些 ASP.NET Core Web Api 的基础教程
    猜你喜欢
    • 2017-09-27
    • 2020-07-10
    • 2017-01-16
    • 2018-10-04
    • 1970-01-01
    • 2018-02-28
    • 2018-05-28
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多