Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASPNET核心使用IE11返回文件失败?内容长度不匹配_C#_Asp.net_.net_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# ASPNET核心使用IE11返回文件失败?内容长度不匹配

C# ASPNET核心使用IE11返回文件失败?内容长度不匹配,c#,asp.net,.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,.net,Asp.net Mvc,Asp.net Web Api,我有一个返回文件的控制器方法,在除IE11之外的所有浏览器中都可以使用。在IE11中,我得到一个500服务器异常。在我的dotnet运行console命令中,我得到了这个消息 失败:Microsoft.AspNetCore.Server.Kestrel[13] 连接id“0HLAA8HNC511P”,请求id“0HLAA8HNC511P:0000000 7”:服务器引发了未经处理的异常 应用System.InvalidOperationException:响应内容长度 不匹配:写入的字节太少(9

我有一个返回文件的控制器方法,在除IE11之外的所有浏览器中都可以使用。在IE11中,我得到一个500服务器异常。在我的
dotnet运行
console命令中,我得到了这个消息

失败:Microsoft.AspNetCore.Server.Kestrel[13] 连接id“0HLAA8HNC511P”,请求id“0HLAA8HNC511P:0000000 7”:服务器引发了未经处理的异常 应用System.InvalidOperationException:响应内容长度 不匹配:写入的字节太少(9283中的0个)

即使添加
app.usedeveloperceptionpage(),我似乎也无法捕捉到异常调用我的
Startup.cs
文件

我的控制器方法非常简单,如下所示

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);
}
公共异步任务GetAsync([FromRoute]长id、[FromRoute]长文件id、[FromQuery]文件预览模型预览选项)
{
var entity=await\u fileService.GetAsync(模块,id,fileId);
var fileName=“MEARS 2000徽标”;
var contentType=“image/gif”;
//这是一个字节数组
var数据=entity.data.Content;
//返回文件内容
返回文件(数据、内容类型、文件名);
}
在IE11中,请求和响应头如下所示

在chrome中,我的标题看起来是这样的

我已将我的dotnet SDK更新为2.1.3版


有人知道可能会发生什么吗

我也有这个问题,相反,它不会总是抛出错误

通过删除操作中的标题来解决此问题,如下所示:

[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);
}
[HttpGet(“{container}/{id}”)]
公共异步任务Get(字符串容器,字符串id)
{
/*删除这两个标题…在此处放置警告,以便在dotnet团队分发修复程序后应用修复程序*/
HttpContext.Request.Headers.Remove(“如果自修改”);
HttpContext.Request.Headers.Remove(“如果不匹配”);
var_fileInfo=provider.GetFileInfo($“{container}/{id}”);
如果(!_fileInfo.Exists || string.IsNullOrEmpty(id))
/*在此处返回默认文件*/
var last=\u fileInfo.LastModified;
/*…为了简洁起见,删除了一些代码*/
返回base.File(_fileInfo.CreateReadStream(),MimeTypeMap.GetMimeType(id.Substring(id.LastIndexOf(“.”)),id,lastModified:_lastModified,entityTag:_etag);
}

dotnet--info
显示
版本:2.0.4

实体、数据、内容的类型是什么?它是一个
还是一个
字节[]
数组。
字节[]
(更新了此细节的帖子)对不起,我没有说清楚这可能与什么有关。添加
Context.Request.Headers.Remove(“如果自修改”)
如何防止异常发生?@Wazner我想这个问题在2.1中已经解决了。OP使用的是2.1.3我在2.0.3上试过了,但没用。我已经升级到2.1.3,但它仍然不工作。我已经尝试添加
HttpContext.Request.Headers.Remove(“内容长度”)
HttpContext.Request.Headers.Remove(“如果自修改”)文件
之前,code>,但仍然会遇到相同的问题。