2017-01-03 12 views
2

ミドルウェア経由でファイルにアクセスすると、ASP.Net Coreアプリケーションで304 Not Modifiedステータスコードを返そうとしています。ミドルウェアでステータスコード304を返す

私はHTTPステータスコードを設定し、そのように戻って応答を送信してください:

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

しかし、私はこの例外を取得:

のSystem.InvalidOperationExceptionが発生したHRESULT = -2146233079
メッセージ=非ボディ304応答に書き込みます。
ソース= 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

空の文字列でWriteAsyncを呼び出すと、エラーは表示されません。 'await context.Response.WriteAsync(" ");' – Andrius

答えて

3

ステータスコードを設定した後に何もしないだけで、意図した機能が実現します。

関連する問題