什么时候使用Map和MapWhen分支在asp.net核心中间件我们正在验证请求.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Map("", (appBuilder) =>
{
appBuilder.Run(async (context) => {
await context.Response.WriteAsync("");
});
});
app.MapWhen(context => context.Request.Query.ContainsKey(""), (appBuilder) =>
{
appBuilder.Run(async (context) =>
{
await context.Response.WriteAsync("");
});
});
}
最佳答案
Map可以仅基于指定请求路径的匹配来分支请求. MapWhen功能更强大,允许根据使用当前HttpContext对象操作的指定谓词的结果来分支请求.
到目前为止,HttpContext包含有关HTTP请求的所有信息,MapWhen允许您使用非常具体的条件来分支请求管道.
到目前为止,HttpContext包含有关HTTP请求的所有信息,MapWhen允许您使用非常具体的条件来分支请求管道.
任何Map调用都可以轻松转换为MapWhen,但反之亦然.例如,这个Map调用:
app.Map("SomePathMatch", (appBuilder) =>
{
appBuilder.Run(async (context) => {
await context.Response.WriteAsync("");
});
});
相当于以下MapWhen调用:
app.MapWhen(context => context.Request.Path.StartsWithSegments("SomePathMatch"), (appBuilder) =>
{
appBuilder.Run(async (context) =>
{
await context.Response.WriteAsync("");
});
});
所以回答你的问题“何时使用Map和MapWhen分支”:当你基于请求路径分支请求时使用Map.当您根据HTTP请求中的其他数据分支请求时,请使用MapWhen.
相关文章
- asp.net核心 - aspnetcidev和aspnetvnext之间的区别?
- 在iOS中,核心位置和核心运动框架的磁场值之间有什么区别?
- ASP.NET MVC 6和ASP.NET Core 1.0之间有什么区别以及核心框架背后的原因?
- c# - ASP.NET核心同步和异步控制器操作之间没有太大区别
- c# - 在ASP.NET核心Web应用程序中,AddJsonOptions和AddJsonFormatters之间有什么区别?
- c# - asp.net核心中部分标记帮助程序和HTML帮助程序之间有什么区别?
- c# - 在asp.net核心解决方案中的项目之间共享视图(.cshtml文件)
- asp.net-core-signalr - SignalR Core中的SendAsync和SendCoreAsync方法之间的区别?
转载注明原文:asp.net-core – 在asp.net核心中间件中分支Map和MapWhen之间的区别? - 代码日志