Map和MapWhen在asp.net核心中间件中的区别?
什么时候使用Map和MapWhen在我们正在验证请求的时候在asp.net核心中间件中分支。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
包含有关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("");
});
});
所以回答你的问题“何时使用地图和MapWhen分支”:当您根据分行要求使用Map
请求路径。基于来自HTTP请求的其他数据转移请求时,请使用MapWhen
。
以上是 Map和MapWhen在asp.net核心中间件中的区别? 的全部内容, 来源链接: utcz.com/qa/266952.html