【发布时间】:2019-04-22 13:35:05
【问题描述】:
我正在开发一个 API,它最初验证来自 https 请求的 Accept 标头,然后通过中间件进行响应。我在 Invoke 方法中添加了验证 Accept 标头的逻辑,如图所示,如果验证的结果(字符串比较)为 false,我如何返回错误的请求对象。
//Invoke method
public async Task<ObjectResult> Invoke(HttpContext context)
{
bool result = context.Request.Headers["Accept"].ToString() ==
"app/version.abc-ghi-api.v";
if (result == true)
{
await _next(context);
}
ObjectResult objectResult = await
Error.GenerateErrorMessage("Accept header validation
failed", Log.Logger);
return objectResult;
}
//Error class
public class Error
{
public async static Task<ObjectResult> Error(string message, logger log)
{
//logic for creating the payload
return new BadRequestObjectResult(errorMessagePayload)
}
}
//Startup class configure method
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMiddleware<AcceptHeaderMiddleware>();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseMvc();
}
我期待 badObjectResult(当验证失败时)作为响应,但我得到 200 OK 响应和空白响应正文。
【问题讨论】:
标签: c# asp.net-core middleware