从页面方法加载文件

时间:2010-12-07 00:04:08

标签: c# asp.net asp.net-ajax pagemethods

我有一个JavaScript函数,它调用页面方法如下:

function openFile(file) {
    PageMethods.LoadFile(file);
}

[System.Web.Services.WebMethod]
public static void LoadFile(string fileName)
{
   HttpContext.Current.Response.ClearContent();
   HttpContext.Current.Response.Buffer = true;
   HttpContext.Current.Response.ContentType = "application/binary";
   var filePath = @"C:\MyFiles\" + fileName;
   HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", fileName));
   HttpContext.Current.Response.WriteFile(filePath);
    HttpContext.Current.Response.End();
}

页面方法抛出以下异常:

Microsoft JScript运行时错误:Sys.Net.WebServiceFailedException:服务器方法“LoadFile”失败,并显示以下错误:System.Threading.ThreadAbortException--正在中止线程。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

你得到这个例外,因为你调用了End()并强制中止。

<强> HttpContext.Current.Response.End();

删除它。

参考:http://support.microsoft.com/kb/312629/
如果你google它: HttpContext.Current.Response.End

更新

我现在看到您尝试发送文件,但您已设置本地磁盘的路径。将其更改为您的http地址。