2016-02-11 25 views
0

該代碼是一個簡單的Web API操作,它將文件作爲附件流回。通過HTTP進行FileStream成功,在HTTPS上失敗

服務器:(網絡API控制器動作)(類型:HttpResponseMessage)

[path fetching code earlier on] 
    ... 
    var result = new HttpResponseMessage(HttpStatusCode.OK); 
    var stream = new FileStream(path, FileMode.Open); 
    result.Content = new StreamContent(stream); 
    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); 
    result.Content.Headers.ContentDisposition.FileName = Path.GetFileName(path); 
    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
    result.Content.Headers.ContentLength = stream.Length; 

    return result 

如果我讓Chrome瀏覽器的請求時,服務器端執行HTTP模式罰款,並返回我的文件。一切正常......

然而如果我這樣做了HTTPS,在服務器端完成後,將UI掛起下載文件,直到它eventaully超時鉻輸出:

GET https://localhost/mysite/api/GetFile?file=ABC net::ERR_CONNECTION_RESET 

我在做什麼錯?我是否必須啓用其他功能才能通過HTTPS/SSL執行此操作?

注意事項;該文件只有約50K,所以它不是一個大小的事情。

+0

通過SSL訪問其他控制器操作是否按預期工作? – spender

+0

是的。所有其他操作按預期完成, – JustAnotherDeveloper

+0

如果您在其他瀏覽器或提琴手中點擊它,會看到什麼錯誤?我發現鉻錯誤屏幕不太有用,其他人有時會提供更好的信息。 – NikolaiDante

回答

0

解決方案

它看起來像這樣的錯誤正在引起去除:

result.Content.Headers.ContentLength = stream.Length; 

刪除這個固定這一點。不知道爲什麼它通過HTTP而不是HTTPS。

相關問題