gpt4 book ai didi

asp.net-core - 忽略中间件中的请求

转载 作者:行者123 更新时间:2023-12-04 03:03:11 25 4
gpt4 key购买 nike

所以我希望 IIS 在请求某些 url 时基本上不做任何事情,因为我想要从服务器端渲染到的 react 路由器来处理请求。

用过这个link

我创建了一个检查每个请求的中间件。现在,一旦找到正确的网址,我不知道如何忽略或中止此请求。

public class IgnoreRouteMiddleware
{

private readonly RequestDelegate next;

// You can inject a dependency here that gives you access
// to your ignored route configuration.
public IgnoreRouteMiddleware(RequestDelegate next)
{
this.next = next;
}

public async Task Invoke(HttpContext context)
{
if (context.Request.Path.HasValue &&
context.Request.Path.Value!="/")
{


// cant stop anything here. Want to abort to ignore this request

}

await next.Invoke(context);
}
}

最佳答案

如果您想停止请求,请不要调用 next.Invoke(context) ,因为这将调用管道中的下一个中间件。不调用它,只是结束请求(之前的中间件代码 next.Invoke(context) 将被处理)。

在您的情况下,只需将调用移至 else 分支或否定 if 表达式

public class IgnoreRouteMiddleware
{

private readonly RequestDelegate next;

// You can inject a dependency here that gives you access
// to your ignored route configuration.
public IgnoreRouteMiddleware(RequestDelegate next)
{
this.next = next;
}

public async Task Invoke(HttpContext context)
{
if (!(context.Request.Path.HasValue && context.Request.Path.Value!="/"))
{
await next.Invoke(context);
}
}
}

还要确保阅读 ASP.NET Core Middleware文档以更好地了解中间件的工作原理。

Middleware is software that is assembled into an application pipeline to handle requests and responses. Each component:

  • Chooses whether to pass the request to the next component in the pipeline.
  • Can perform work before and after the next component in the pipeline is invoked.


但是如果你想要服务器端渲染,可以考虑使用微软的 JavaScript/SpaServices库,它已经内置在较新的模板(ASP.NET Core 2.0.x)中,并注册了一个后备路由,例如。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");

routes.MapSpaFallbackRoute(
name: "spa-fallback",
defaults: new { controller = "Home", action = "Index" });
});

新模板还支持热模块更换

关于asp.net-core - 忽略中间件中的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47174979/

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