は、私は、次のHTTPGET機能を持っている:HttpHeadは、ASP.NETで私のASP.NETコアコントローラでは、コア
[HttpGet("[action]")]
[HttpHead("[action]")]
[ResponseCache(NoStore = true)]
public async Task<IActionResult> GetProofPdf(long studentid)
{
var rawPdfData = await _studentLogic.StudentPdfAsync(User, studentid);
if (Request.Method.Equals("HEAD"))
{
Response.ContentLength = rawPdfData.Length;
return Json(data: "");
}
else
{
return File(rawPdfData, "application/pdf");
}
}
これはうまく動作しません。返されたファイルオブジェクトは、ブラウザから保存できます。唯一の問題は、PDFをIEに埋め込むことです。 IEは最初にHEADリクエストを送信します。 HEAD要求が失敗するので、IEはPDFを取得しようとしません。他のブラウザは、HEADが失敗したときには、HEADを送信せず、GETを使用しますが、IEでは失敗します。
私はサポートIEをしたいので、HEADアクションを作成します。単にHEADのためにコンテンツが空でなければならないからです( "HEADメソッドはGETと同じですが、サーバが応答のメッセージ本体を返してはならないことを除いてはいけません")。[HttpHead("[action]")]
は機能しません。
したがって、ASP.NETコアでHttpHead-Verb-Functionを作成するにはどうすればよいですか?空のコンテンツを返すにはどうすればよいですか?コンテンツの長さは正しいですか?
ありがとうございます! HEADが呼び出されますが、PDFを埋め込むことはまだ機能しません。 'return Json(data:" ");'は空ではないと思いますか?ソースの例を更新しました。 – Sam
@Sam実際にはいくつかのデータを返していますが、Jsonの代わりにreturn Ok()を使ってみてください(data: ""); –
返品OK()、ありがとう! – Sam