gpt4 book ai didi

c# - ASP.net c# 试图在服务器上运行可执行文件

转载 作者:行者123 更新时间:2023-11-30 15:43:09 26 4
gpt4 key购买 nike

我有这种通过在我们的服务器上运行 exe 程序来生成许可证的方法:

/// <summary>
/// Generate a new license
/// </summary>
public static void GenerateLicense(string Name, string EmailAddress, Licensing.Types.LicenseType Type, Licensing.Types.ProductTypes Product)
{
string Params = "\"" + Licensing.Types.LicenseTypeToString(Type) + "\" \""
+ Licensing.Types.ProductTypeToString(Product)
+ "\" \"" + Name + "\" \""
+ EmailAddress + "\"";

// Start license executable and pass in all the params
Process.Start(Settings.LicenseExecutableLocation, Params);

}

它没有抛出任何错误,也没有明显地运行程序(它应该在服务器上生成一些文件)。可执行文件 (Settings.LicenseExecutableLocation) 的位置是 C:\inetpub\wwwroot\licensegen.exe 这是正确的,而且参数也是正确的(我已经打印出来了)。

我正在运行 IIS7,它根本没有抛出任何错误,我需要更改 IIS7 中的某些内容吗?

最佳答案

由于您在启动进程时没有遇到异常,因此您需要找出它实际在做什么。我会将您的最后一行更改为

var pLicenseGenerator =  Process.Start(Settings.LicenseExecutableLocation, Params);

然后在等待几秒钟让进程完成它的工作后,在调试 session 中调查 pLicenseGenerator 对象的属性。该对象将属于 Process类,我会特别注意 .ExitCode 属性。在设计良好的控制台应用程序中,如果程序遇到错误(如旧的 DOS %ERRORLEVEL% 变量),这将被设置为非零值。

如果 .ExitCode 没有帮助,我建议转储 .StandardOutput到网页或文件进行调试。

当我过去遇到类似的问题时,问题总是出在我格式化进程输入参数的方式上。有时如果参数是一个很长的文件路径,你需要特别注意用双引号括起来的方式。

一个简单的步骤就是吐出您传递给 Process.Start() 的确切路径和参数,然后查看您自己从命令行运行它们时会发生什么。如果他们工作正常,那么它可能是某种与权限相关的问题,正如另一位发帖人推测的那样。

关于c# - ASP.net c# 试图在服务器上运行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6963271/

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