问题描述
使用ASP.Net Core,C#
我有一个中间件,在其中检查是否存在特定的cookie,否则返回400响应。我的问题是中间件启动了项目本身并检查cookie是否存在,然后在swagger索引页面中显示了响应文本,这是我不希望的。我希望只对请求执行此条件。
public async Task InvokeAsync(HttpContext context)
{
var pl = context.Request.Cookies["pl"];
var sig = context.Request.Cookies["sig"];
if (string.IsNullOrWhiteSpace(pl) || string.IsNullOrWhiteSpace(sig))
{
context.Response.StatusCode = StatusCodes.Status400BadRequest;
context.Response.ContentType = "application/json";
await context.Response.WriteAsync("Invalid Data");
return;
}
// If success i process and do something
// Call the next delegate/middleware in the pipeline
await _next(context);
}
解决方法
我可以防止在招摇加载时触发中间件,而仅针对api请求触发。但这是更好的方法还是其他更好的方法?
app.UseWhen(context => `context.Request.Path.ToString().Contains("/api"),HandleBranch);`