ASP.NET 进程执行导致输出 JPG 文件中的文本编码不正确

问题描述 投票:0回答:1

我正在使用 ASP.NET 应用程序通过命令行参数执行外部可执行 (EXE) 文件。 EXE 应该生成一个带有一些文本的 JPG 文件。当进程成功退出 (ExitCode 0) 时,JPG 文件上的文本显示为

???
,而不是预期的文本。

这是我用来启动该过程的代码:

// Begin code ...

var p = new Process();
p.StartInfo.FileName = image_bestPumps_exe_name;
string workingDirectory = Path.GetDirectoryName(image_bestPumps_exe_name);
p.StartInfo.WorkingDirectory = workingDirectory;
p.StartInfo.Arguments = params1;
p.Start();

// End code ...
  • 从命令提示符执行时,EXE 可以完美运行。
  • 从 Delphi 应用程序执行时,EXE 也能正常工作。
  • 我尝试使用
    runas
    运行 ASP.NET 应用程序并设置工作目录,但问题仍然存在。

有什么帮助或建议吗?

c# asp.net exe
1个回答
0
投票

您所面临的文本显示为 ??? 的问题从 ASP.NET 应用程序执行 EXE 时生成的 JPG 文件中可能有以下几个原因:

  • 编码不匹配:ASP.NET 应用程序使用的编码可能与外部 EXE 期望的编码不同。尝试使用 Encoding.UTF8.GetBytes() 指定命令行参数的编码。
  • 字体问题:包含您尝试显示的字符的字体可能在运行 ASP.NET 应用程序的系统上不可用。确保字体已安装或嵌入到 EXE 本身中。
  • 权限:ASP.NET 应用程序池用户可能缺乏访问 EXE 所需资源的必要权限。尝试使用具有适当权限的用户帐户运行应用程序池。
  • 环境变量:外部 EXE 可能依赖于从 ASP.NET 应用程序启动时未设置的特定环境变量。在开始该过程之前,确定任何所需的环境变量并以编程方式设置它们。 以下是一些额外的提示:
  • 检查事件日志中是否存在与流程执行相关的任何错误。
  • 尝试使用 p.StartInfo.RedirectStandardOutput = true 捕获 EXE 的输出;查看是否有任何错误消息。 通过调查这些潜在原因,您应该能够解决生成的 JPG 文件中文本显示不正确的问题。
© www.soinside.com 2019 - 2024. All rights reserved.