在中间件中返回状态代码304

时间:2017-01-03 23:10:16

标签: c# asp.net-core

当我通过我的中间件访问文件时,我正在尝试在ASP.Net Core应用程序中返回304 Not Modified状态代码。

我尝试设置HTTP状态代码并像这样发送响应:

context.Response.StatusCode = 304;
await context.Response.WriteAsync("Not Modified");

但我得到了这个例外:

  

发生System.InvalidOperationException HResult = -2146233079
  消息=写入非正文304的响应   Source = Microsoft.AspNetCore.Server.Kestrel StackTrace:          在Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.HandleNonBodyResponseWrite()          在Microsoft.AspNetCore.Server.Kestrel.Internal.Http.Frame.d__183.MoveNext()       ---从抛出异常的先前位置开始的堆栈跟踪结束---          在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务   任务)          在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务   任务)          在System.Runtime.CompilerServices.TaskAwaiter.GetResult()          在Adapt.REST.ServeStaticFilesMiddleware.d__8.MoveNext()中   C:\ AdaptSource \ Xivic \ Adapt.Services \ ServeStaticFilesMiddleware.cs:行   113 InnerException:

显然我不能使用WriteAsync或SendFileAsync,因为它们都发送包含正文的响应。

如何在没有身体的情况下将304发送回客户端?

1 个答案:

答案 0 :(得分:6)

设置状态代码后什么都不做会导致预期的功能。

context.Response.StatusCode = 304;
return;