C#Razor网站下载自定义扩展文件404错误

时间:2018-03-23 20:24:07

标签: c# download http-status-code-404 file-extension

我有一个简单的锚链接,需要从服务器下载文件。文件名为:“ RT350Z_cfg.modbus ”。我相信服务器无法识别文件类型,因此它给了我 404错误

文件的确切路径是: ~/uploads/UNITS/docs/VFD/RT350Z_cfg.modbus

我的 cshtml 文件只有这个:

 <a target="_blank" href="@(VirtualPathUtility.ToAbsolute("~/uploads/UNITS/docs/VFD/RT350Z_cfg.modbus"))">Download File</a>

当我点击链接时,我发现未找到404错误。我已经三次检查该文件是否存在于服务器的该位置。

然后我将扩展名修改为*.txt文件并修改了超链接以查找txt文件。

<a target="_blank" href="@(VirtualPathUtility.ToAbsolute("~/uploads/UNITS/docs/VFD/RT350Z_cfg.txt"))">Download File</a>

当我将扩展程序物理修改为*.txt文件,然后更改了超链接时 - 文件下载得很好。

如何允许我的网络应用程序下载自定义文件扩展名?

2 个答案:

答案 0 :(得分:1)

某些版本的IIS不提供“未知”文件。 您可以配置web.config以根据需要处理文件:

<system.webServer>
    <staticContent>
      <mimeMap fileExtension=".modbus" mimeType="text/plain" />

或二进制:

<mimeMap fileExtension=".modbus" mimeType="application/octet-stream" />

您可以在MSDN了解更多相关信息。

答案 1 :(得分:1)

通常,我在我的控制器中创建一个 Action ,它返回一个FormatException,只需在视图中创建一个System.Exception来指向它。这是更多 MVC 下载文件的方式。另外,你可以完全控制它。

FileContentResult

在视图中,使用以下内容:

ActinLink