1

我写了一个文件下载代码,但是当我在我的项目中启动它时出现这个错误。只有这段代码工作得很好。但是在复杂的项目中发生了这个错误。你能帮忙吗?这是下载代码

string fileUrl = @filePath + "\\" + _DownloadableProductFileName;
            string newFileName = _DownloadableProductFileName;
            FileStream fs = new FileStream(fileUrl, FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[(int)fs.Length];
            fs.Read(buffer, 0, (int)fs.Length);
            fs.Close();
            Response.Clear();
            Response.AddHeader("Content-Length", buffer.Length.ToString());
            Response.AddHeader("Content-Disposition", "attachment; filename=" + newFileName);
            Response.BinaryWrite(buffer);
            Response.End();

错误代码是

Microsoft JScript 运行时错误:由于错误 c00ce514,无法完成操作。

这里发生错误。

get_responseData: function XMLHttpExecutor$get_responseData() {
    /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData">The text of the response.</value>
    if (arguments.length !== 0) throw Error.parameterCount();
    if (!this._responseAvailable) {
        throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData'));
    }
    if (!this._xmlHttpRequest) {
        throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData'));
    }

    return this._xmlHttpRequest.responseText; //here throw error
},
4

1 回答 1

0

只是为了协议(迟了两年;)。当您的下载代码放置在执行异步回发的更新面板中时,会发生错误。您必须确保传递二进制文件的请求始终执行同步回发,以便浏览器能够解释二进制结果文件(而不是预期 html 片段的 XMLHttpExecutor)。

解决方案:将 Button 的名称作为PostBackTrigger或注册按钮

ScriptManager.GetCurrent(Page).RegisterPostBackControl(yourButton)
于 2014-08-29T05:29:53.917 回答