在Web API方法我生成一個文件,然後將其分流到像這樣的Web API - 如何檢測時的響應已完成發送
public async Task<HttpResponseMessage> GetFile() {
FileInfo file = generateFile();
var msg = Request.CreateResponse(HttpStatusCode.OK);
msg.Content = new StreamContent(file.OpenRead());
msg.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
msg.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") {FileName = file.Name};
return msg;
}
的響應,因爲這是一個生成的文件,我想在響應完成流式處理後將其刪除,但我似乎無法找到管道中的鉤子。
我想我可以把一個靜態文件的引用,並設置一個自定義的MessageHandler,從這個相同的靜態變量拉出值並刪除。然而,這似乎不可能是正確的,因爲使用靜態(當這應該都是每個請求),因爲我必須註冊一個單獨的路線。
我見過this question但它似乎並沒有太多有用的迴應。
謝謝基蘭,我試圖用裝飾模式做這樣的事情,並拉我的頭髮,因爲我不能只是重寫公衆。在那個筆記上(並且因爲你在Web Api上工作)任何機會,我們可以讓HttpContent基於未來的接口? –
是的,我正在生成一個pdf,但通過炮轟phantomjs來做到這一點,所以File是我的基本交換格式,不幸的是'Stream' –