当我通过我的中间件访问文件时,我正在尝试在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发送回客户端?
答案 0 :(得分:6)
设置状态代码后什么都不做会导致预期的功能。
context.Response.StatusCode = 304;
return;