.net核心在web应用程序中使用web api
这是我在stackoverflow上的第一个问题,希望它不是因为我的搜索技能不佳。.net核心在web应用程序中使用web api
我最近试图用.net内核创建日志服务器。 我开始一个Web API项目,创造了这样的事情:
[HttpPost("/log")]
public IActionResult Post([FromQuery] string msg, [FromQuery] string stackTrace)
{
...
}
我存储每个日志作为一个对象,我可以使用的console.log以显示其价值。然后我试图使用websocket将日志推送到Web客户端。
我希望修改本教程https://radu-matei.github.io/blog/aspnet-core-websockets-middleware/以适应我的需要。
该教程项目工作正常。消息在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/<<Your Controller Name without Controller at the end>>
。在方法之上定义的自定义路由将附加到默认网址。此外,您的路线定义不需要以/
开头。
欲了解更多详情,请查看:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing
希望这有助于。
由于这两个参数都是完整的句子字符串,所以最好将它们放在POST主体中。
我特别建议您不要通过查询字符串发送堆栈跟踪。查询字符串的最大长度(取决于浏览器和可能的Web服务器),并且堆栈跟踪可能有很多文本。
讨论与细节: What is the maximum possible length of a query string?
做这样的事情:
[HttpPost("log")]
public IActionResult Post([FromBody] Log data)
{
...
}
有了Log类
public class Log
{
public string StackTrace {get;set;}
public string Message {get;set;}
}
它不是 “/” 路线中的额外的,因为工作!但奇怪的是,它在Web api项目中起作用 – ninespace