C# 我的PDF';正在Adobe中打开,但不是通过我的浏览器打开

C# 我的PDF';正在Adobe中打开,但不是通过我的浏览器打开,c#,asp.net,http,events,pdf,C#,Asp.net,Http,Events,Pdf,我在ASP.NET中有一个带有C#的web应用程序,打开一些PDF时遇到了问题 代码将查找所选ID并提取与该ID关联的pdf路径。返回的路径正在运行,并且是正确的。出于某种原因,当我在浏览器中点击open时,它说文件已损坏且无法修复,但当我在adobe中打开它时,一切都很完美 这是我的密码: string id; string path; DataTable dt = Session["UnmatchedItems"] as DataTable; ASPxButton button = (A

我在ASP.NET中有一个带有C#的web应用程序,打开一些PDF时遇到了问题

代码将查找所选ID并提取与该ID关联的pdf路径。返回的路径正在运行,并且是正确的。出于某种原因,当我在浏览器中点击open时,它说文件已损坏且无法修复,但当我在adobe中打开它时,一切都很完美

这是我的密码:

string id;
string path;

DataTable dt = Session["UnmatchedItems"] as DataTable;

ASPxButton button = (ASPxButton)sender;

id = button.CommandName;

DataView dv = new DataView(dt);

dv.RowFilter = "id = " + id;

path = dv[0][2].ToString();

Response.ClearHeaders();

Response.ContentType = "application/pdf";

Response.AddHeader("Content-Disposition", "attachment; filename=" + path);

Response.WriteFile(path);
不知道发生了什么或者为什么它无法打开


如果我忘了什么或者你需要更多信息,请告诉我

这就是对我有效的方法:

byte[] fileContents = System.IO.File.ReadAllBytes(Server.MapPath("~/" + pathToFile));
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.OutputStream.Write(fileContents, 0, fileContents.Length);

“我的路径”是客户端服务器/计算机上的物理路径,因此server.MapPath会引发异常,因为它不是有效的虚拟路径。然后删除server.MapPath,只将物理路径作为ReadAllBytes的参数。我刚刚展示了一个示例,说明在应用程序中,该文件是否位于web服务器的某个目录中。aspnet进程还需要对您试图从中获取文件的目录具有读取权限。我遇到了相同的错误,“打开此文档时出错。文件已损坏,无法修复。”您是否正确输入了路径?您确定aspnet进程具有该文件的访问权限吗?另外,尝试在ReadAllBytes之后设置断点,并查看是否正在填充该断点。请确保您的文件名也以.pdf结尾。我已经尝试了几种不同的路径,但没有一种通过asp.net有效。关于访问权限,我在哪里检查?