Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.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# 非法入境者及非法入境者;Chrome:加载资源失败:net::ERR\u未完成\u分块\u编码_C#_Google Chrome_Iis_Web Applications - Fatal编程技术网

C# 非法入境者及非法入境者;Chrome:加载资源失败:net::ERR\u未完成\u分块\u编码

C# 非法入境者及非法入境者;Chrome:加载资源失败:net::ERR\u未完成\u分块\u编码,c#,google-chrome,iis,web-applications,C#,Google Chrome,Iis,Web Applications,我最近遇到了一个Chrome问题,我认为值得与您分享 我使用HttpHandler编写了一个自写的API,它应该返回json数据。但当发生错误时,我想显示一个html文件。这在IE和FF中运行得很好,但在Chrome中却不行 查看开发人员工具发现了这个错误:net::ERR\u未完成\u分块\u编码 谷歌在这个问题上说得不多,但人们看到的却很多。我所知道的是,它在一段时间后神奇地消失了 我发现它存在于以下几行代码中: result.StoreResult(context); context.Re

我最近遇到了一个Chrome问题,我认为值得与您分享

我使用HttpHandler编写了一个自写的API,它应该返回json数据。但当发生错误时,我想显示一个html文件。这在IE和FF中运行得很好,但在Chrome中却不行

查看开发人员工具发现了这个错误:net::ERR\u未完成\u分块\u编码

谷歌在这个问题上说得不多,但人们看到的却很多。我所知道的是,它在一段时间后神奇地消失了

我发现它存在于以下几行代码中:

result.StoreResult(context);
context.Response.Flush();
context.Response.Close(); //<-- this causes the error
result.StoreResult(上下文);
context.Response.Flush();
context.Response.Close()// 根据:

如果您过早地刷新Http请求的响应流,并且响应的内容长度标头没有明确设置,ASP.NET将以分块编码(传输编码:分块)的方式将数据传输到客户端

解决方案:您需要显式设置响应的内容长度头,以防止ASP.NET在刷新时对响应进行分块

下面是我用来防止ASP.NET通过设置所需的头对响应进行分块的C#代码:

受保护的void writeJsonData(字符串s){
HttpContext=this.context;
HttpResponse response=context.response;
context.Response.ContentType=“text/json”;
byte[]b=response.ContentEncoding.GetBytes(s);
AddHeader(“Content-Length”,b.Length.ToString());
响应。二进制写入(b);
尝试
{
this.Context.Response.Flush();
this.Context.Response.Close();
}
捕获(异常){}
}

在我的例子中,问题与缓存相关,并且是在执行CORS请求时发生的

将响应头
缓存控制
强制为
无缓存
解决了我的问题:

[使用Symfony组件]


我也遇到了同样的错误。此问题与web服务器用户对缓存文件夹的权限有关。

我在生成文件并将其推给用户下载时遇到此错误,但只是偶尔出现。当它没有失败时,文件总是短2字节。Close()强制关闭连接,无论连接是否完成,在我的例子中,连接没有完成。正如问题中所建议的,省略它意味着生成的文件既包含生成的内容,也包含整个页面的HTML

这里的解决方案是替换

context.Response.Flush();
context.Response.Close();


这也是一样的,但不会缩短事务。

如果有人因为ASP.net核心项目的问题而登陆这里,我可以通过以下方式解决


这是在实例化webhost实例时完成的。

我曾经遇到过同样的问题,主要原因在于我的控制器返回类型。 如果您尝试按原样返回
C#object
just,则只会得到
net::ERR_complete_CHUNKED_ENCODING
,因此在将复杂对象发送到
java脚本
客户端(或
查看
)之前,不要忘记对其进行序列化。 i、 e.我的控制器返回类型为:

public async Task<List<ComplexModel>> GetComplexModelList(){
    return new List<ComplexModel>()
}

检查此资源;我在尝试发送分块响应时遇到了相同的问题,可能您的响应是分块的(默认情况下)。我遇到了与JSONP回调中包装的本地JSON文件完全相同的问题。当我从远程CDN请求文件时也会发生这种情况。在我的例子中,我遇到了
net::ERR_complete_CHUNKED_ENCODING
错误,因为服务器的网线没有完全连接。我最近发现我的卡巴斯基阻止了超过2MB的响应,这导致了这个错误。我必须暂停卡巴斯基保护以正确加载页面。您是否尝试并获得任何最终解决方案?我尚未找到解决方案<代码>加载资源失败:net::ERR_complete_CHUNKED_ENCODING
引用:和-问题可能是使用UpdatePanels的Chrome中的内容长度。我不知道。我在
IEExceptionFilter
和设置
Content Length
中遇到了同样的问题,这很有帮助!谢谢你能详细说明一下吗。我已经在集成中添加了Useii,但是我仍然得到这个错误。我需要配置任何选项吗?我还打算研究这个解决方案,但第一个链接不再存在,第二个是Microsoft文档,它解释说
CreateDefaultBuilder()
已经调用了
UseIISIntegration
。因此,我不知道这是否意味着上述操作已经在.Net Core中发生了,或者是因为我的
程序.cs
创建了默认的构建器,正如前面所解释的那样。那么,当我们在本地调试它时,为什么不抛出它呢?当我尝试打开我的托管应用程序时,出现此错误
context.Response.End();
public async Task<List<ComplexModel>> GetComplexModelList(){
    return new List<ComplexModel>()
}
using Newtonsoft.Json;
...
public async Task<string> GetComplexModelList(){
    return JsonConvert.SerializeObject(new List<ComplexModel>())
}