javascript - 无法使用 javascript 将 http POST 请求发送到 ASP.NET Web api Controller

标签 javascript asp.net node.js asp.net-web-api xmlhttprequest

有一个node.js服务器,当客户端使用websocket与node.js服务器连接时,我将调用我的web api Controller 。我使用 socket.io 将客户端与 Node.js 服务器连接,然后 Node.js 服务器向 Web api Controller 发送 xhr POST 请求。但得到的回应是, "{"Message":"未找到与请求 URI ' http://localhost:4928/api/Player 匹配的 HTTP 资源'.","MessageDetail":"在 Controller 'Player'上找不到与请求匹配的操作。"}"

Web API 方法

    public class PlayerController : ApiController
{
      public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

    public string Post(string value)
    {
        return value;
    }
}

Node.js

 var app = require('express')();
var http = require('http').Server(app);
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xhr = new XMLHttpRequest();
var querystring = require('querystring');
var io = require('socket.io')(http);
io.on('connection', function (socket) {
    console.log('A user connected ' + socket.handshake.address);
    PostRequest(socket.handshake.address);
    //Whenever someone disconnects this piece of code executed
    socket.on('disconnect', function () {
        console.log('A user disconnected ' + socket.handshake.address);
    });
});


function PostRequest(data) {

    var url = "http://localhost:4928/api/Player";
    var params = "value=" + data;/* querystring.stringify({ "value": data })*/
    xhr.open('POST', url, true);
    xhr.onreadystatechange = function () {//Call a function when the state changes.
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log(xhr.responseText);
        }
        console.log(xhr.responseText);

    }
    xhr.send(querystring.stringify({ value: "sss" }));

}


http.listen(3000, function () {
    console.log('listening on *:3000');
});

无论如何,当我调用 get 方法发送 xhr get 请求时,这是有效的

最佳答案

您需要通知 Web API 查找 parameter in the Request body因为您没有通过查询字符串发送数据。尝试修改您的操作后签名:

public string Post([FromBody]string value)
{
    ...
}

关于javascript - 无法使用 javascript 将 http POST 请求发送到 ASP.NET Web api Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50891404/

相关文章:

javascript - parseInt vs unary plus,什么时候用哪个?

基于Referrer的Javascript重定向

javascript - 使用 jquery 进行自增和自减

javascript - PhpStorm 中 JavaScript 的第一行中断

javascript - 在网页上查看 PDF 文件而不下载?

node.js - NodeJS 排队异步函数

c# - 所有的 Web 请求都是并行执行和异步处理的吗?

asp.net - AngularJS 和 ASP.Net 中的单页应用程序工作正常,但是当我在浏览器中刷新页面时,出现 404 错误

asp.net - 禁用 Google 工具栏自动填充

angularjs - HTML5 视频无法播放且媒体请求中止