我使用'另存为html'将文件另存为html。 我的代码是:
string fileName = "";
string htmlpfilepath;
string[] parts;
try
{
htmlpfilepath = Server.MapPath(ClinicalDocFile);
parts = ClinicalDocFile.Split('/');
if (parts.Length > 0)
fileName = parts[parts.Length - 1];
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "text/HTML");
response.AddHeader("Content-Disposition",
"attachment; filename=" + fileName + "; size=" + fileName.Length.ToString());
response.Flush();
response.WriteFile(htmlpfilepath);
response.Flush();
response.End();
}
catch (Exception ex)
{
FW.Fission.WebSite.Code.Utilities.SiteUtilities.HandleException(ex);
}
我在response.End();
行中收到以下错误。
启用评估表达式,因为代码已优化或本机框位于调用堆栈之上。
答案 0 :(得分:0)
如果使用Response.End
发生ThreadAbortException异常。您可以使用try-catch语句来捕获此异常。
Response.End
方法结束页面执行,并将执行转移到应用程序事件管道中的Application_EndRequest事件。 <{1}}后面的代码行未执行。
检查Here
- 希望它有所帮助。
答案 1 :(得分:0)
要解决此问题,请使用以下方法之一:
对于Response.End
,请致电HttpContext.Current.ApplicationInstance.CompleteRequest
方法而不是Response.End绕过代码执行到Application_EndRequest
事件。
对于Response.Redirect
,使用一个重载,Response.Redirect(String url,bool endResponse),它为endResponse参数传递false以禁止对Response.End的内部调用。
例如:
Response.Redirect ("nextpage.aspx", false);
如果使用此解决方法,则会执行Response.Redirect之后的代码。 对于Server.Transfer,请改用Server.Execute方法。
来自此链接 http://support.microsoft.com/kb/312629/en-us
response.redirect
也面临同样的问题,你应该添加假
但如果您要下载word文档文件,则应使用response.end(),否则下载的word文档将会损坏。