我写了一个文件下载代码但是当我在我的项目中启动它时出现此错误。只有这段代码才能完美运行。但在复杂的项目中发生了这个错误。你能帮忙吗? 这是下载代码
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
},
答案 0 :(得分:0)
仅适用于协议(两年后;)。当您的下载代码放在执行异步回发的更新面板内时,会发生此错误。您必须确保提供二进制文件的请求始终执行同步回发,以便浏览器能够解释二进制结果文件(而不是期望html片段的XMLHttpExecutor)。
解决方案:将按钮名称设为PostBackTrigger或使用
注册按钮ScriptManager.GetCurrent(Page).RegisterPostBackControl(yourButton)