2011-05-14 105 views
2

我必须从我们的内部网站运行一个工具。用户将从用户界面提供的输入很少,然后我想用用户凭证运行该工具。当我从本地机器运行它时,我的代码工作正常,但是当我将它部署到生产服务器并尝试从该服务器执行它时,它不会启动任何内容。未从生产Web服务器运行的应用程序

这是我的代码,任何意见将不胜感激。

  System.Diagnostics.ProcessStartInfo PSI = new System.Diagnostics.ProcessStartInfo(@"D:\run.bat");    
      PSI.UserName = "username"; 
      PSI.Domain = "domain"; 
      System.Security.SecureString securePwd = new System.Security.SecureString(); 
      string password = "password"; 
      foreach (char c in password) 
      { 
       // Append the character to the password. 
       securePwd.AppendChar(c); 
      } 
      PSI.Password = securePwd; 
      PSI.UseShellExecute = false; 
      process.StartInfo = PSI; 
      PSI.Arguments = SiteId.Text + " " + WebServiceUrl.Text + " " +LogFile.Text; 
      process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
      process.Start(); 
+0

这可能听起来很愚蠢,但是你确定你已经在服务器上部署了'run.bat'(并且该服务器也有一个D:\驱动器)? – SirViver 2011-05-14 21:58:40

+2

还是权限? – 2011-05-14 22:01:03

+0

是的run.bat在该位置可用。当我登录到该服务器后手动运行它时,它工作正常。 – 2011-05-14 22:02:50

回答

0

我想关闭这个线程,因为我解决了从生产服务器运行应用程序的问题。但我面临着使用特定用户名&密码运行该应用程序的问题。它总是以任何身份在apppool中设置。所以现在,如果我只用这条线在运行于应用程序池默认身份

Process.Start("notepad"); 

但是,如果我用这行代码它甚至没有在该服务器

  string password = "XXXXX"; 
      System.Security.SecureString securePwd = new System.Security.SecureString(); 
      foreach (char c in password) 
      { 
       // Append the character to the password. 
       securePwd.AppendChar(c); 
      } 
      Process.Start("notepad", "username", securePwd, "domain"); 

我开始记事本我会就此问一个单独的问题。感谢所有回复的人。

1

第一:

  • 检查您的应用程序池(高级设置)的身份。
  • 将身份切换到“系统”并查看批处理文件是否从Web应用运行。

如果确实如此:

  • 更改身份回到网络服务,
  • 确保您的批处理文件具有执行权限适用于用户使用网络服务(或者你选择哪个身份)

如果没有:

  • 尝试使用您的代码打开文件并在最后附加一些无害的文本。
  • 如果有效,您至少可以排除权限和网络应用程序可见性问题。
+0

从昨天开始,我围绕它做了大量的研究。我可以从asp.net网页运行一个notepad.exe我已经完全删除了上面的代码并且只使用Process.Start(“notepad.exe”)这会启动一个记事本,但是当我在任务管理器中检查它时,进程启动在网络中服务用户名称。当我用批处理文件替换notpad.exe时,我看到了相同的观察结果。但我的应用程序无法在网络服务帐户中运行。所以我试着用这行 Process.Start(“notepad.exe”,“username”,securePwd,“domain”)用特定的用户名和密码执行它并观察它没有启动任何记事本进程。 – 2011-05-16 03:04:53

+0

我已经尝试了这两个应用程序池身份设置“网络服务”和“应用程序池身份”,但没有看到它执行。如果您对此有所了解,请提前致谢,并在此处发布。 – 2011-05-16 03:05:04

相关问题