c# - System.Diagnostics.Process.Start() 在 Web 服务器中不起作用

标签 c# asp.net .net

我有一个 C# asp.net 网页,它从 Mysql 数据库(存储为 longblob 格式)读取 PDF 文件并打开它。它在我的本地主机上工作;该页面从数据库中读取文件并使用 acrobat 阅读器打开,但在我部署该页面后它在测试服务器中不起作用。 acrobat 阅读器打不开,我在 taskmgr 管理器中也没有看到 acroRd32.exe。我觉得这是权限问题,因为我使用 process.start() ,这在服务器中可能不允许,但我没有看到错误消息。如果有权限需要在服务器端做;谁能给我指明方向?

谢谢。

这是我的代码:

MySqlDataReader Reader = null;
connection.Open();
MySqlCommand command = new MySqlCommand("Select Image, File_Type, File_Name from table where ImageID = " + ImageID, connection);
Reader = command.ExecuteReader();

if (Reader.Read())
{
    byte[] buffer = (byte[])Reader["Image"];
    System.IO.MemoryStream stream1 = new System.IO.MemoryStream(buffer, true);
    stream1.Write(buffer, 0, buffer.Length);

    String fileName = Reader["File_Name"].ToString();
    String dirName = "C:\\thefolder\\";
    if (!Directory.Exists(dirName))
    {
        // if not then create
        Directory.CreateDirectory(dirName);
    }
    if (File.Exists(dirName+fileName))
        File.Delete(dirName + fileName);
    Directory.CreateDirectory(Path.GetDirectoryName(Reader["File_Name"].ToString()));

    using (Stream file = File.Create(dirName + fileName))
    {
        file.Write(buffer, 0, buffer.Length);
    }
    Process process = new Process();
    process.StartInfo.FileName = "AcroRd32.exe";
    process.Start();                    
}

感谢您的帮助,我可以通过回复发送 pdf 内容。这是代码

//Process process = new Process();
//process.StartInfo.FileName = "AcroRd32.exe";
//process.Start();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.Clear();
Response.AppendHeader("Content-Disposition", "attachment");
Response.TransmitFile(dirName + fileName);
Response.End();

最佳答案

您的 C# 代码在服务器上运行。
因此,Process.Start 在服务器上启动一个进程,而不是在您的计算机上。

你根本不可能直接在客户端启动一个进程。

但是,如果您在 HTTP 响应中提供 PDF(使用正确的 Content-Type),浏览器将在 PDF 查看器中打开它。

关于c# - System.Diagnostics.Process.Start() 在 Web 服务器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9024614/

相关文章:

c# - 泛型和显式/隐式运算符

c# - 我可以通过编程方式控制 .NET Core 程序集重定向吗?

Asp.net Cookie 域/范围

ASP.Net - 将任何请求重定向到同一路径的另一个域

c# - 扩展基类方法

c# - 将本地用户添加到本地管理员组

c# - 我只需要处理特定选定表的列名

c# - Prism,将 Views 和 ViewModels 与 Unity 连接起来,试图理解它

c# - 线程上的计时器?

asp.net - 我需要自定义成员(member)提供者吗?