gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 00:26:53 26 4
gpt4 key购买 nike

我有一个 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com