我们有一个简单的控制台应用程序,可生成TXT文件并将其作为电子邮件发送给用户列表。此控制台应用程序位于驱动器E上的远程服务器中。如果我转到远程服务器并从命令行运行它,则会生成文件并发送电子邮件。 Drive E是远程服务器中的本地驱动器。
现在我需要从webform运行EXE,所以我使用System.Diagnostics.Process
调用它,然后部署到远程服务器。 Process.StartInfo.FileName
和WorkingDirectory
都指向E:\。代码是按下按钮,所以我单击按钮,我收到错误The remote server returned an error: (403) Forbidden
:
Process myProcess = new Process();
myProcess.StartInfo.FileName = @"cons.exe";
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.WorkingDirectory = @"E:\apps\Program\CFolder";
myProcess.StartInfo.RedirectStandardInput = false;
myProcess.Start();
在我的工作站中,我有一个映射到RemoteServer的E驱动器(Y :)。我使用的代码与上面的代码完全相同,但它是Y:\而不是E:。所以我在本地调试,生成文件和电子邮件。
我理解它与许可问题有关,但问题是什么?似乎在RemoteServer中,C:\ inetpub \ App \ Call.aspx中的webform无法写入E:\,即使C:和E:是本地驱动器,我添加了NETWORK SERVICE
和IIS_IUSRS
E:中的文件夹。
我可以将代码包含在网络表单中而不是调用EXE,但我更喜欢调用EXE,因为它已经存在了。
答案 0 :(得分:0)
我最终将代码集成到网站中并删除了对控制台应用程序的调用。