我想用C#编写保存html的代码

时间:2013-12-12 14:32:07

标签: c# .net

我使用'另存为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();行中收到以下错误。

  

启用评估表达式,因为代码已优化或本机框位于调用堆栈之上。

2 个答案:

答案 0 :(得分:0)

如果使用Response.End发生ThreadAbortException异常。您可以使用try-catch语句来捕获此异常。

Response.End方法结束页面执行,并将执行转移到应用程序事件管道中的Application_EndRequest事件。 <{1}}后面的代码行未执行。

检查Here

同时检查此Articlethis

- 希望它有所帮助。

答案 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文档将会损坏。