ASP.NET Web API コントローラーからファイルを返そうとすると、応答は JSON として扱われます。これを解決するには、ASP.NET Core でファイルをダウンロードするための正しいアプローチを理解することが重要です。
ASP.NET Core Web API でファイルを返すには、HttpResponseMessage の代わりに派生した IActionResult を返す必要があります。フレームワークは HttpResponseMessage をモデルとして解釈し、JSON 応答の問題を引き起こします。
以下は、IActionResult を使用してファイルを返す方法を示す更新されたコード例です。
<code class="csharp">[Route("api/[controller]")] public class DownloadController : Controller { // GET api/download/12345abc [HttpGet("{id}")] public async Task<IActionResult> Download(string id) { Stream stream = await GetStreamBasedOnIdAsync(id); if (stream == null) return NotFound(); // Returns a NotFoundResult with Status404NotFound response return File(stream, "application/octet-stream", $"{FileName}.{FileExtension}"); // Returns a FileStreamResult } }</code>
注: ストリームに対して using ステートメントを使用しないでください。そうしないと、応答が送信される前に破棄され、例外または破損した応答が発生します。フレームワークは、応答が完了するとストリームの破棄を自動的に処理します。
以上がASP.NET Core Web API コントローラーからファイルを返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。