可以在类库中下载包含代码的文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可以在类库中下载包含代码的文件相关的知识,希望对你有一定的参考价值。

我有一个C#类库项目,它继承了第三方解决方案,然后我实现了他们提供的方法。

一切都按预期工作,但我想要完成的一项任务是下载文件。我使用了以下代码,我在项目中输入了一个类:

string fp = "C:CompletePathFile.pdf";
FileInfo fi= new FileInfo(fp);

System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.ClearContent();
System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=test.pdf");
System.Web.HttpContext.Current.Response.AddHeader("Content-Length", fi.Length.ToString());
System.Web.HttpContext.Current.Response.ContentType = "application/pdf";
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.TransmitFile(fi.FullName);
System.Web.HttpContext.Current.Response.End();
  • 所以该文件存在(我可以得到它)。
  • 我已经完成了代码,没有错误。
  • 上面的代码适用于页面(Asp .Net页面)。
  • 在Chrome中,文件开始下载,然后我收到“失败 - 网络错误”。
  • 在边缘 - 无法找到页面。

当代码驻留在类库中时,是否还有其他方法可以触发文件下载?

编辑1(提琴手)

HTTP / 1.1 504 Fiddler - 接收失败日期:星期二,2018年1月2日16:35:40 GMT内容类型:text / html; charset = UTF-8连接:关闭Cache-Control:no-cache,must-revalidate时间戳:16:35:40.226

[Fiddler] ReadResponse()失败:服务器没有为此请求返回完整的响应。服务器返回408个字节。

编辑2

    System.Web.HttpContext.Current.Response.ContentType = "application/pdf";
    System.Web.HttpContext.Current.Response.Flush();
    System.Web.HttpContext.Current.Response.Buffer = false;
    System.Web.HttpContext.Current.Response.TransmitFile(fi.FullName);
    //System.Web.HttpContext.Current.Response.End();
    System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
答案

您可以在配置文件中设置maxRequestLength(以kb为单位)。

<system.web>
<httpRuntime maxRequestLength="1500000" />
</system.web>

希望有所帮助

要么

尝试使用Buffer = false设置HttpContext.Current.ApplicationInstance.CompleteRequest();和End请求,除非Response.End();

System.Web.HttpContext.Current.Response.Buffer = false; 
System.Web.HttpContext.Current.Response.TransmitFile(fi.FullName);    
//System.Web.HttpContext.Current.Response.End();
System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();

让我们知道你的尝试

以上是关于可以在类库中下载包含代码的文件的主要内容,如果未能解决你的问题,请参考以下文章

在类库中嵌入二进制文件

在C#的类库中可以创建WPF的窗口吗

无法在类库中为实体框架启用迁移

在类库中使用 WCF 服务时出错

.NET Core在类库中读取配置文件appsettings.json

如何在类库中使用重定向(url)方法?