Vb.net 是否需要在我的响应标题中设置内容长度?

Vb.net 是否需要在我的响应标题中设置内容长度?,vb.net,http,download,response,Vb.net,Http,Download,Response,我正在查看一些遗留代码,发现了一个导致响应无限期搁置的bug 基本思路如下: Response.Content-Type = "application/octet-stream" Response.AddHeader("Content-Disposition", "attachment; filename" & someFileName) Response.AddHeader("Content-Length", someStoredLength) Response.BinaryWrite

我正在查看一些遗留代码,发现了一个导致响应无限期搁置的bug

基本思路如下:

Response.Content-Type = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename" & someFileName)
Response.AddHeader("Content-Length", someStoredLength)
Response.BinaryWrite(someByteArray)
Response.Flush()
Response.End()
问题是someStoredLength比someByteArray的实际大小大得多,因此客户端只是坐在那里等待文件下载,而浏览器只是旋转

我正在考虑删除指定内容长度的AddHeader,因为当我这样做时,一切似乎都很好,但我担心我没有理解一些东西

我是否可以删除此AddHeader,或者我是否应该找到更好的方法来处理此问题?

您的应用程序(向下滚动到内容长度)定义它,但是,这不是严格要求的


以下是一些可能的选项。

将内容长度行更改为以下内容:

Response.AddHeader("Content-Length", someByteArray.Length.ToString())

这是什么语言?上面代码中的响应对象是什么类?@RichAmberale:这与问题无关。问题发生在浏览器上,原因是HTTP头。代码在VB.NET中,但我可能会在ASP.NET中的其他地方发现此问题。Classic也在考虑这样做。我想知道这是否是一个好的选择。如果我有一个字节数组,那么Length属性是否总是给出正确的大小?是的。content length标头指示内容中的字节数。你的内容是一个字节数组,所以你很好。链接文章中建议的解决方案(“只需将长度设置为某个可能太大的任意值”)似乎是一个非常糟糕的主意。即使它不会破坏当前用户代理的任何功能,它也会破坏“内容长度”头的整个概念,并可能破坏不常见但完全符合标准的HTTP客户端库。如果事先不知道文件的大小,则应在所有情况下使用分块传输编码(如果要重用连接(保持活动状态),则必须使用分块传输编码)。直接链接到,另请参阅