gpt4 book ai didi

c# - 没有 MVC 的 .Net Core 2 路由

转载 作者:行者123 更新时间:2023-11-30 15:56:27 25 4
gpt4 key购买 nike

我正在尝试创建一个带有 Angular 前端和 api/db 后端的简单 .Net Core 2 应用程序。

我不想使用 MVC,因为我不需要典型的点网 View 或模型,但我在提供 index.html 文件以及将 api 调用路由到我的 Controller 时遇到问题。

我知道它在 program.cs 中的某处并涉及路由,但我一直无法找到有关如何在不使用 mvc 包的情况下执行我想要的操作的文档。

简单地说,这是我的要求:

  1. 在路由到根目录时提供我的 angular index.html 文件(让 angular 处理那里的其余路由)
    1. 将我的/api 路由路由到 c# 点网络 Controller
    2. 不使用 MVC

谢谢!

最佳答案

您可以使用 UseRouter() 中间件将路由直接显式映射为应用程序配置管道的一部分。

例如,下面创建一个自定义路由来处理 Lets Encrypt 请求,如果启用任何其他路由,默认情况下该请求将失败。以下代码进入服务器 Startup 类的 Configure() 方法:

        // Handle Lets Encrypt Route(before MVC processing!)
app.UseRouter(r =>
{
r.MapGet(".well-known/acme-challenge/{id}", async (request, response, routeData) =>
{
var id = routeData.Values["id"] as string;
var file = Path.Combine(env.WebRootPath, ".well-known", "acme-challenge", id);
await response.SendFileAsync(file);
});
});

这使得简单路由方案或将请求转发给其他处理程序变得非常容易。

请注意,这是一个原始接口(interface),不包含任何超出原始请求/响应语义的输入或输出处理。

如果您正在使用 API 样式数据做任何事情,那么我仍然建议您使用 MVC 和 Controller 来处理您必须自己构建的各种事情。在 Core 中,API 和 MVC 运行相同的 Controller 管道,因此您可以将 MVC 视为 Web API 和 MVC 的组合。

对于大多数常见用例,使用 MVC 仍然是可行的方法。上述方法非常适合微服务或一次性请求,因为这可能会给您带来一点性能提升,因为它不必加载任何 MVC 位或触发该管道,但您有责任做你自己的序列化和请求处理。

关于c# - 没有 MVC 的 .Net Core 2 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com