2017-12-23 6 views
1

ファイルを返すコントローラメソッドがあります。すべてのブラウザで、IE11とは別に動作します。 IE11では、500サーバーの例外が発生します。私のdotnet runコンソールコマンドで、私はこのメッセージを受け取ります。IENETを使用してASPNETコアファイルを返すことができませんか? Content_Lengthの不一致

は失敗:Microsoft.AspNetCore.Server.Kestrel [13] 接続ID "0HLAA8HNC511P"、リクエストID "0HLAA8HNC511P:00000007":未処理の例外が アプリケーションによってスローされました。 System.InvalidOperationException:レスポンスContent-Length 不一致:書き込まれたバイト数が少なすぎます(9283の0)。

Startup.csファイルにapp.UseDeveloperExceptionPage();コールを追加しても、私は例外をキャッチできないようです。私のコントローラメソッドは非常に簡単で、IE11ではこの

public async Task<IActionResult> GetAsync([FromRoute] long id, [FromRoute] long fileId, [FromQuery] FilePreviewModel previewOptions) 
{ 
    var entity = await _fileService.GetAsync(Module, id, fileId); 

    var fileName = "MEARS 2000 LOGO"; 
    var contentType = "image/gif"; 

    // this is a byte array 
    var data = entity.Data.Content; 

    // return file content 
    return File(data, contentType, fileName); 
} 

のように見えます

、リクエストとレスポンスヘッダはこのように見えます。 Chromeで

enter image description here

、私のヘッダはそうのように見えます。

enter image description here

私はバージョン2.1.3に私DOTNETのSDKを更新しました。

何が起こっている可能性がありますか?

+0

'entity.Data.Content'の種類は何ですかversion : 2.0.4を示しています

は、このようなアクション内のヘッダを削除することによってそれを解決するためにマネージド?それは 'Stream'か' byte [] '配列ですか? – Wazner

+0

'byte []'(この詳細を含む更新された投稿)申し訳ありませんが、これをクリアします – Gillardo

+1

これはhttps://github.com/aspnet/Mvc/issues/6875に関連している可能性があります。あなたのアクションに 'Context.Request.Headers.Remove(" If-Modified-Since ");を追加すると例外が発生しないようにしますか? – Wazner

答えて

0

私はこの問題も抱えていましたが、代わりにエラーを常にスローしません。

[HttpGet("{container}/{id}")] 
public async Task<IActionResult> Get(string container, string id) 
{ 
    /* remove both of these headers... put a warning here to apply the fix after dotnet team distributes the fix. */ 
    HttpContext.Request.Headers.Remove("If-Modified-Since"); 
    HttpContext.Request.Headers.Remove("If-None-Match"); 

    var _fileInfo = provider.GetFileInfo($"{container}/{id}"); 
    if (!_fileInfo.Exists || string.IsNullOrEmpty(id)) 
     /* return a default file here */ 

    var last = _fileInfo.LastModified; 
    /* ... some code removed for brevity */ 

    return base.File(_fileInfo.CreateReadStream(), MimeTypeMap.GetMimeType(id.Substring(id.LastIndexOf("."))), id, lastModified: _lastModified, entityTag: _etag); 
} 

dotnet --info

関連する問題