【发布时间】:2015-01-29 14:13:27
【问题描述】:
我的 aspx 页面有一个下载链接。单击它时会弹出一个窗口,要求用户输入一些数据,根据这些数据在下载之前修改文件。
我已将弹出窗口发出的请求转发给通用处理程序,该处理程序具有生成文件并将其附加到响应标头中的代码。
现在,我收到一个线程中止异常,因为由于代码已优化或本机框架位于调用堆栈顶部,因此无法计算表达式。
我猜响应头没有被客户端解释,因为弹出。 请找到代码 sn-p 并告诉我哪里出错了:
弹出按钮的 ASPX:
<button id="BtnDownload" class="btnSubmit" onclick="javascript:downloadFileViaHandler()">
Download</button>
Javascript 函数:
function downloadFileViaHandler() {
$('#popupdiv').dialog('close');
var urlHandler = "/WebHandlers/downloadHandler.ashx";
var urlHandlerParam = window.location.href.split('/');
var actualUrlparam = urlHandlerParam[0] + "/" + urlHandlerParam[1] + "/" + urlHandlerParam[2] + "/" + urlHandlerParam[3];
//Sanitize URLs for Server
var urlHandler = actualUrlparam + urlHandler;
$.ajax({
type: 'POST',
async: false,
url: urlHandler,
data: { FileID: '' + FileID + '\'' },
success: function (data) {
console.info(data);
},
error: function () {
alert("Error occured while Downloding File");
}
});
}
处理程序代码:
public void ProcessRequest(HttpContext context)
{
//some Logic to generate file//
string filePath = str_SaveFileLocation;
DownloadFilePath = (str_SaveFileLocation);
string name = Path.GetFileName(DownloadFilePath);
string ext = Path.GetExtension(DownloadFilePath);
string Filetype = "text/DBC";
context.Response.Clear();
context.Response.AppendHeader("content-disposition", "Downloads; filename=" + name);
context.Response.ContentType = Filetype;
context.Response.WriteFile(DownloadFilePath);
context.Response.End();
}
【问题讨论】:
标签: asp.net popup handler httpresponse generic-handler