将数据发送到从asp.net

将数据发送到从asp.net

问题描述:

运行Windows应用程序我试图将数据发送到从我的asp.net页面用C#编写一个运行Windows窗体应用程序。 当我从网页调用应用程序时,应用程序并未启动,但如果我尝试从命令行运行它,则会出现问题。将数据发送到从asp.net

这是代码在asp.net

protected void Page_Load(object sender, EventArgs e) 
{ 
    // ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:connectSocketServer(); ", true); 
    SecureString sc = new SecureString(); 
    string Source = "*****"; 
    foreach (char c in Source.ToCharArray()) 
    { 
     sc.AppendChar(c); 
    } 
    ProcessStartInfo i = new ProcessStartInfo(@"C:\******\myapp.exe", "test"); 
    i.UserName = "******"; 
    i.UseShellExecute = false; 
    i.Password = sc; 
    i.Verb = "runas"; 
    Process p = new Process(); 
    p.StartInfo = i; 
    p.Start();  
} 

启动我的应用程序的一部分,这是将代码从我的应用程序

static System.Threading.Mutex mutex = new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}"); 

[STAThread] 
static void Main(params string[] Arguments) 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Form1 mf = new Form1(); 

    if (mutex.WaitOne(TimeSpan.Zero, true)) 
    { 
     Application.Run(mf); 
     mutex.ReleaseMutex(); 
    } 
    else 
    { 
     MessageBox.Show("only one instance at a time"); 
     mf.SendData(Arguments); 

    } 
} 

和形式有一个名为送出数据公共职能这将处理数据...

所以,如果我从cmd行和传递参数运行它,SendData将被执行,但从网页不工作...

注:我取下下IWAP用户,但形式的用户名和密码信息的应用apears在任务管理器不显示

+0

随机过程是在任务管理器中可见,或者它根本不执行呢? –

+0

如果我通过CMD运行的是这将是可见的,但是从网页NOP –

+0

你检查Windows事件日志中关于为什么过程中不会启动任何细节?你能否提供'p'属性的某些值,例如'HasExited','Responding'等? –

你的进程正在启动,但它停止响应,因为它已成为制约权限ASP .NET辅助进程的上下文中运行。您的新流程没有权限访问此环境以外的任何内容。

您可以选择elevate the permission of the worker process或允许IIS服务与桌面as explained in another answer进行交互。

但是,在您提到的注释中,您的Windows应用程序充当连接客户端的服务器。除非它仅用于测试目的,否则我会通过API或Web服务向这些客户端套接字推荐一种不同的方法。与.NET远程处理的Windows服务甚至更好,但我建议只使用WCF。

Tested.Hope这将解决您的problem.Its一个很好的做法是使用try catch块

protected void Page_Load(object sender, EventArgs e) 
    { 

      SecureString sc = new SecureString(); 
      string Source = "*****"; 
      foreach (char c in Source.ToCharArray()) 
      { 
       sc.AppendChar(c); 

      } 
      sc.MakeReadOnly(); 
      try 
      { 
       ProcessStartInfo i = new ProcessStartInfo(@"C:\******\myapp.exe", "test"); 
       i.Domain = "*****"; 
       i.UserName = "*****"; 
       i.UseShellExecute = false; 
       i.CreateNoWindow = true; 
       i.RedirectStandardOutput = true; 
       i.Password = sc; 
       i.Verb = "runas"; 
       Process p = new Process(); 
       p = Process.Start(i); 
      } 
      catch (Win32Exception w32E) 
      { 
       // Display Some Message 
      } 
} 
+0

OP没有提到有关引发异常的任何信息。实际上,他特别提到这个过程确实在运行,只是没有做任何事情。 –

+0

以上代码对于Windows窗体应用程序工作正常。只要我们需要做的是给例如正确的路径。 C:\项目\ WinApplication \ WinApplication \ OBJ \调试\ WinApplication.exe – ADarnal