Asp.net core .Net核心在web应用程序中使用web api

Asp.net core .Net核心在web应用程序中使用web api,asp.net-core,Asp.net Core,这是我关于stackoverflow的第一个问题,希望这不是因为我搜索能力差 我最近尝试创建一个带有.net内核的日志服务器。 我启动了一个web api项目,并创建了如下内容: [HttpPost("/log")] public IActionResult Post([FromQuery] string msg, [FromQuery] string stackTrace) { ... } [HttpPost("log")] pu

这是我关于stackoverflow的第一个问题,希望这不是因为我搜索能力差

我最近尝试创建一个带有.net内核的日志服务器。 我启动了一个web api项目,并创建了如下内容:

    [HttpPost("/log")]
    public IActionResult Post([FromQuery] string msg, [FromQuery] string stackTrace)
    {
       ...
    }
    [HttpPost("log")]
    public IActionResult Post([FromBody] Log data)
    {
       ...
    }
我将每个日志存储为一个对象,可以使用console.log显示其值。然后我尝试使用websocket将日志推送到web客户端

我希望修改本教程以满足我的需要

教程项目运行良好。在web客户端之间发送和接收消息

但是,我无法将教程web应用程序项目与我的web api控制器集成。“/log”api提供404响应

因此,我决定启动一个web应用程序模板,并向其添加一个默认的web api值控制器(该控制器具有属性[Route(“api/[controller]”)

加载的默认网页很好,但api/值给出404响应

向web应用程序添加具有路由属性的控制器的正确方法是什么


非常感谢

假设您有以下控制器:

[Route("api/[controller]")]
public class MyLogController : Controller
{
    [HttpPost("log")]
    public string Post()
    {
        // your code here...
    }
}
然后你应该发布到URL
/api/mylog/log
。WebApi中URL的默认结构是
/api/
。上述方法定义的自定义路由将附加到默认url。此外,路线定义不需要以
/
开头

有关更多详细信息,请参阅:


希望这有帮助。

因为这两个参数都是完整的句子字符串,所以最好将它们放在文章正文中

一、 特别是,建议不要通过查询字符串发送堆栈跟踪。查询字符串具有最大长度(取决于浏览器,可能还取决于web服务器),堆栈跟踪可以包含大量文本

讨论细节:

这样做:

    [HttpPost("/log")]
    public IActionResult Post([FromQuery] string msg, [FromQuery] string stackTrace)
    {
       ...
    }
    [HttpPost("log")]
    public IActionResult Post([FromBody] Log data)
    {
       ...
    }
使用日志类

public class Log
{
    public string StackTrace {get;set;}
    public string Message {get;set;}
}

因为路线上有多余的“/”而无法工作!!但奇怪的是,它在一个webapi项目中工作