在我的应用程序中,我在服务器上保留了一些文件,并使它们可以在某些业务逻辑上下载。
所有其他文件类型都已下载,但.msg(Outlook message)
文件未下载并显示错误:
404 - File or directory not found. The resource you are looking for might
have been removed, had its name changed, or is temporarily unavailable.
图像,.docx,.txt所有其他文件都运行良好。
该页面是在ASP.NET中设计的,并在标记后的客户端站点设计。
答案 0 :(得分:14)
在ASP.NET forum上找到。
创建处理程序,将其下载为文件:
Response.ContentType = "application/vnd.ms-outlook";
Response.AppendHeader("Content-Disposition","attachment; filename=Message.msg");
Response.TransmitFile(Server.MapPath(YourPathToMsgFile));
Response.End();
或更改IIS 6.0中的设置:
选择HTTP标头 - >点击MIME类型 - >单击New并将“.msg”添加为扩展名,将“application / vnd.ms-outlook”添加为MIME类型。
答案 1 :(得分:3)
使用下面的标签我们可以直接提到标签的文件名。
<a href="Your File_Location">Download Link</a>
无需在控制器中指定代码。
只需将以下标记添加到
中的web.config即可 <staticContent>
<mimeMap fileExtension=".msg" mimeType="application/octet-stream" />
</staticContent>
答案 2 :(得分:1)
<system.webServer>
<staticContent>
<mimeMap fileExtension=".msg" mimeType="application/octet-stream" />
</staticContent>
</system.webServer>
答案 3 :(得分:0)
这是我在ASP.NET论坛上找到的另一个答复。包含在此处以节省时间。
如果ASP.NET Core本身正在处理静态内容并在边缘运行,或者如果您需要ASP.NET Core来了解mime类型,则需要配置ASP.NET Core的处理程序来了解它。使用FileExtensionContentTypeProvider如下所示:
public void Configure(IApplicationBuilder app)
{
// Set up custom content types - associating file extension to MIME type
var provider = new FileExtensionContentTypeProvider();
// Replace an existing mapping
provider.Mappings[".msg"] = "application/vnd.ms-outlook";
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images")),
RequestPath = "/StaticContentDir",
ContentTypeProvider = provider
});
谢里德(Sherry Chan)