Asp.net mvc MVC未返回正确的文件类型

Asp.net mvc MVC未返回正确的文件类型,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我在MVC 5应用程序中编写了一个基本的FilePathResult,以返回一个文件。未正确返回的文件类型是.xlsxPDF的和其他文件工作正常 public FilePathResult Download(int? id) { var model = db.DisciplineModels.Where(x=>x.Id == id).Include(i=>i.Employee).FirstOrDefault(); string username = model.Emp

我在MVC 5应用程序中编写了一个基本的
FilePathResult
,以返回一个文件。未正确返回的文件类型是
.xlsx
<代码>PDF的和其他文件工作正常

public FilePathResult Download(int? id)
{
    var model = db.DisciplineModels.Where(x=>x.Id == id).Include(i=>i.Employee).FirstOrDefault();
    string username = model.Employee.FirstName + " " + model.Employee.LastName;
    string mimeType = MimeMapping.GetMimeMapping(model.Report_Filename);
    string path = string.Format(@"~/Employee Records/{0}/HR/Discipline/{1}", username, model.Report_Filename);
    return new FilePathResult(path, mimeType);
}
我的
mimeType
返回的文件类型为
application/vnd.openxmlformats officedocument.spreadsheetml.sheet
,文件路径正确(文件在文件夹中)。一切似乎都很正常,直到它将文件传递到浏览器进行下载。它作为一个没有扩展名的文件返回。我没有在这台计算机上安装Office,但这很重要吗?(这是一台开发机器,不需要办公室)


有什么想法吗?

开始编辑

根据报告:

因此,对于您的情况,您可以尝试使用
返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report\u Filename}与返回文件相同(路径、mimeType、model.Report\u文件名)

结束编辑

尝试将以下部分添加到
web.config

<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
        </staticContent>
    </system.webServer>
</configuration> 

开始编辑

根据报告:

因此,对于您的情况,您可以尝试使用
返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report\u Filename}与返回文件相同(路径、mimeType、model.Report\u文件名)

结束编辑

尝试将以下部分添加到
web.config

<configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".xlsx" mimeType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
        </staticContent>
    </system.webServer>
</configuration> 

通过将返回类型从
FilePathResult
更改为
File
,我能够使其按预期运行

更改此
返回新文件路径结果(路径,mimeType)
返回文件(路径、mimeType、model.Report\u文件名)


不确定为什么
FilePathResult
对此不起作用。(非常感谢您提供的任何见解)。

通过将返回类型从
FilePathResult
更改为
File
,我能够使其按预期运行

更改此
返回新文件路径结果(路径,mimeType)
返回文件(路径、mimeType、model.Report\u文件名)



不确定为什么
FilePathResult
对此不起作用。(非常感谢您的任何见解)。

您在
.xlxs
中有输入错误吗?是的,我是说.xlsx。更新了实际的
模型。报告
.xlsx
文件的\u文件名
值?
模型。报告\u文件名
显示为
规程\u 20160422T130831.xlsx
您在
.xlxs
中有打字错误吗?是的,我是指.xlsx。更新了实际的
模型。为
.xlsx
文件报告\u文件名
值?
模型。报告\u文件名
显示为
规程\u 20160422T130831.xlsx
同样的情况也会发生。文件出来时没有任何提示extension@ShawnGavett,原因可能是路径太长了?@Shawn Gavett,尝试返回新的FilePathResult(model.Report_文件名,mimeType)可疑,具有相同文件名(时间戳格式)的
pdf
工作正常。嗯,
.csv
也不起作用。现在回想起来,我使用响应和
memorystream
导出项目中的其他excel文件。我可以用这些代码来完成这项工作。奇怪的是,
FilePathResult
无法处理
xls、xlsx、csv
文件。如果我这样做,MVC将不知道从哪里获取文件。它将搜索我的应用程序的根级别。尝试了它,它产生了那个错误。同样的事情也发生了。文件出来时没有任何提示extension@ShawnGavett,原因可能是路径太长了?@Shawn Gavett,尝试返回新的FilePathResult(model.Report_文件名,mimeType)可疑,具有相同文件名(时间戳格式)的
pdf
工作正常。嗯,
.csv
也不起作用。现在回想起来,我使用响应和
memorystream
导出项目中的其他excel文件。我可以用这些代码来完成这项工作。奇怪的是,
FilePathResult
无法处理
xls、xlsx、csv
文件。如果我这样做,MVC将不知道从哪里获取文件。它将搜索我的应用程序的根级别。尝试了它,它产生了那个错误根据(查找
文件
方法)。可能在
.pdf
浏览器本身能够推断出正确的名称的情况下。与
返回新的FilePathResult(path,mimeType){FileDownloadName=model.Report_Filename}相同根据(查找
文件
方法)。可能在
.pdf
浏览器能够自行推断出正确的名称的情况下。