使用 Postman,我向我的服務發送一個 GET 請求,其中包含 Header 以接受“application/pdf”和接受編碼“gzip、deflate、br、*”。
在代碼方面,
byte[] pdf_test = System.IO.File.ReadAllBytes(@"C:\somewhere\hello.pdf");
OkObjectResult output = new OkObjectResult(pdf_test); // uncomment below once done.
output.ContentTypes.Add(@"application/pdf"); // LINE IN QUESTION
// And finally, back to the remote caller.
return output;
當我除錯這段代碼時,狀態代碼是 200,并且ContentTypes有“aplication/pdf”。值具有 pdf 的所有位元組。
當郵遞員收到回應時,我看到回傳代碼為 406 Not Acceptable。
奇怪的是,當我從上面注釋掉“LINE IN QUESTION”時,郵遞員收到了 200 OK 的訊息。但是 Content-Type 被接受為“application/json”。
為什么會出現這種情況?
Postman 最終無關緊要,但真正的程式需要“application/pdf”內容型別,這個真正的程式尚不存在。所以至少我想讓我的一方正確完成。
提前致謝。
uj5u.com熱心網友回復:
要回傳檔案的內容,最好使用FileStreamResult.
var stream = System.IO.File.OpenRead(@"C:\somewhere\hello.pdf");
return new FileStreamResult(stream, "application/pdf");
該OkObjectResult參與談判的內容和格式。
從檔案:
一個 ObjectResult 在執行時執行內容協商,格式化物體主體,如果協商和格式化成功,將產生 Status200OK 回應。
這不應該在這里發生以回傳位元組陣列/流。
GitHub 上的源代碼顯示,由于不存在格式化程式(對于內容型別),因此在執行時會設定HTTP狀態代碼。406 Not AcceptableOkResultObjectapplication/pdf
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/377708.html
