问题标签 [response.transmitfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9060 浏览

asp.net - Response.TransmitFile、Response.End 和 IE 的问题

我正在开发一个 ASP.NET 应用程序,它在某一时刻使用 Response.TransmitFile 向用户发送一个文件。

它在我的开发机器上运行良好,当我将它部署到测试服务器时,它仍然可以在其中两个上运行;虽然在其中一台服务器(W2K3)中它只适用于 Firefox,但当我在 IE7 上尝试它时,我收到一个错误,如“Internet Explorer 无法在(服务器名称)上打开文件 sendfile.aspx”。

我创建了一个小的内联 aspx 页面来重现问题,这里是:

我尝试了不同的东西,我注意到如果我注释掉该Response.End行它会再次起作用(但是根据我在网上找到的每个示例代码,AFAIK 这行应该在那里)

<html>, <head>我注意到的另一个可能相关也可能不相关的问题是,如果我删除 the及其结束标签,它也会失败。

我已经为此苦苦思索了一段时间,有人知道如何让它工作吗?

0 投票
1 回答
7993 浏览

asp.net - 当我使用 ASP.NET 流式传输文件时,为什么 IIS7 会忽略我的内容类型标头?

我有一个有两个页面的简单网站。一个显示文件列表,另一个在列表中单击文件时流式传输文件。生产 6 个月一切正常,但现在我必须将站点移至 Windows 2008/IIS7。我大部分时间都在工作,但是文件无法正确打开(在 Firefox 中),因为我的内容类型标头被忽略了。在生产站点(IIS6)上,标头是(使用 Fiddler):

但在测试 IIS7 服务器上,我得到:

Fiddler 还报告了协议违规并说“内容长度不匹配:响应标头要求 236841 字节,但服务器发送了 238378 字节。”

我的代码如下所示:

这几天我一直在尝试解决这个问题。我对 IIS7 不太熟悉,并且一直在努力寻找更改各种设置的位置。我确实设法弄清楚了这两种托管管道模式,并通过切换到经典 .NET AppPool 修复了一些其他问题(集成在传输文件时抛出了各种错误)。

有没有办法告诉 IIS7 不要覆盖我的 ContentType 标头,如果这是发生的事情?

0 投票
2 回答
20108 浏览

c# - Response.TransmitFile 并在传输后将其删除

我必须在我的站点中实现 GEDCOM 导出。

单击导出到 gedcom 时,我的 .net 代码在服务器上创建了一个文件。

然后我需要将它从服务器下载到客户端,并且应该询问用户将该文件保存在哪里,这意味着需要 savedialog。

下载后,我想从服务器中删除该文件。

我有一个代码将文件从服务器传输到客户端:

从这个链接

但我无法在此代码Response.End结束响应后删除文件,因此在该行之后编写的任何代码都不会执行。

如果我之前执行删除文件的代码Response.End();,则文件不会传输并且我收到错误消息。

0 投票
2 回答
7658 浏览

c# - 将 Response.TransmitFile 用于物理文件不起作用

我正在尝试使用 Response.TransmitFile() 来提示下载。我已经阅读了许多关于这个问题的帖子,并基于 Rick Strahl 的博客 http://www.west-wind.com/weblog/posts/76293.aspx我的方法

唯一的区别(我可以说)是我的目标是虚拟目录之外的物理文件。此代码在 ajaxified radgrid 中调用...我想知道 response.transmitfile 是否不适用于 ajax 调用?这是我的代码片段:

看到系统知道文件存在...它通过 Response.End() 没有错误...然后继续正确地应用程序...除了没有下载提示。

ReturnExtension 方法是从另一个站点提取的(抱歉我不记得在哪里!)如下

0 投票
8 回答
16515 浏览

c# - 如何从 C# 代码传输 zip 文件

我正在使用 c#.net 应用程序,我需要在其中使用 c# codebase 下载 zip 文件。我正在使用以下代码下载文件:

zip 文件已传输,但是当我在下载后尝试打开 zip 文件时,我收到一条错误消息“无法打开文件:文件看起来不是有效的存档”

请让我知道我在哪里做错了,以及如何获取一个 zip 文件并在没有任何错误的情况下提取它。

提前致谢

0 投票
1 回答
1661 浏览

asp.net - Response.TransmitFile() 使用 ASP.NET 开发服务器抛出“对路径 {path} 的访问被拒绝”

我正在尝试使用 Response.TransmitFile() 发送受保护的 PDF 文件(无法直接通过浏览器访问),但我得到“访问路径......被拒绝”。我正在使用 ASP.NET 开发服务器,所以我不确切知道哪个是正在使用的用户帐户。无论如何,我已经为所有人设置了完全控制,但仍然没有运气。

这可能是什么原因造成的?也许甚至与权限无关......

我正在使用的代码如下,我不确定它是否可以。

0 投票
6 回答
33632 浏览

c# - Response.TransmitFile 没有下载,也没有抛出错误

我目前正在使用 HttpResponse 从我的服务器下载文件。我已经有几个函数用于下载 Excel/Word 文件,但我无法下载我的简单文本文件 (.txt)。

对于文本文件,我基本上是将 TextBox 的内容转储到文件中,尝试使用 HttpResponse 下载文件,然后删除临时文本文件。

这是适用于 Excel/Word 文档的代码示例:

这是不起作用的代码块。
请注意,代码运行时不会引发任何错误。文件已创建并删除,但从未转储给用户。

0 投票
1 回答
204 浏览

asp.net - 在 ActionResult 中将请求传回 IIS

我很确定答案是“你不能这样做”,但如果是这样,那么 ASP.NET MVC 就存在严重缺陷。

我有一个 ActionResult 需要提供静态文件(文件名在代码中确定)。出于性能原因(并且因为我不想为接受字节和缓存标头重新实现 HTTP 规范),我想将请求交给 IIS。就像 HttpModule 中的 context.RewritePath() 一样,当你给它一个静态文件的名称时。

除非这需要在 ActionResult 中发生,而不是在 PostAuthorizeRequest 期间。

查看 FileStreamResult 和 FilePathResult 类,很明显它们只实现了 HTTP 200。TransmitFile() 很好,但它不是内核缓存,它不处理 Accept-bytes、If-Modified-Since 或 Etags .

我们几乎被告知 IIS 在服务文件方面有多好,集成管道有多重要,IIS6 上的邪恶通配符映射对性能有多重要,等等。

现在我们又回到了同一条船上——没有办法让 IIS 从 ActionResult 中提供静态文件。(不,TransmitFile 不算在内)。

我什至已经开始看到 MS 建议您将静态内容放在单独的服务器上。

请告诉我我错了,有一种神奇的方法可以做到这一点。还是集成的白日梦被MVC杀死了?

0 投票
1 回答
457 浏览

c# - IE 和 word 中的 TransmitFile 安全问题

我正在尝试将文件(word 文档)从我的服务器传输到客户端

我正在使用这个:

在 IE 中,当我单击下载弹出窗口的打开时,一切正常,并且打开了我的文档。

问题是当我单击 word 中的保存按钮时,它会弹出一个安全/连接弹出窗口。我必须为 mysite.com 提供用户名/密码

0 投票
5 回答
6191 浏览

c# - Repsonse.Transmitfile(); 可以保存但不能打开

我正在尝试使用发送 xlsx 文件

弹出IE对话框,我可以成功保存文件,然后从文件夹中打开它,效果很好。但是如果我在 IE 对话框中单击“打开”,我会得到“无法下载 myFile.xlsx”。我单击“重试”,它会打开 Excel,但会弹出“Excel 无法打开文件 'myFile.xlsx',因为文件格式或文件扩展名无效......”错误。
我目前正在以调试模式从 VS2010 运行该站点。

有谁知道为什么它会让我保存,但不能直接打开?

编辑
Chrome 只是下载它。FF尝试打开它,但给出了错误The file you are trying to open, 'myFile.xlsx.xls', is in a different format than specified by the file extension...我可以选择打开它并且它成功打开,但在只读模式下。
所以,这里正在发生一些时髦的事情。
文件名 = "我的文件.xlsx"

编辑 2
这是在 IE 9 中。我也尝试过octet-streamapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet作为 ContentType。