将数据发送到从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在任务管理器不显示。
你的进程正在启动,但它停止响应,因为它已成为制约权限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
}
}
OP没有提到有关引发异常的任何信息。实际上,他特别提到这个过程确实在运行,只是没有做任何事情。 –
以上代码对于Windows窗体应用程序工作正常。只要我们需要做的是给例如正确的路径。 C:\项目\ WinApplication \ WinApplication \ OBJ \调试\ WinApplication.exe – ADarnal
随机过程是在任务管理器中可见,或者它根本不执行呢? –
如果我通过CMD运行的是这将是可见的,但是从网页NOP –
你检查Windows事件日志中关于为什么过程中不会启动任何细节?你能否提供'p'属性的某些值,例如'HasExited','Responding'等? –