当前位置:编程学习 > C#/ASP.NET >>

服务器端执行exe


    我在web开发时候,遇到一个棘手的问题,希望在这里得到解决。

    我的思路是想将一个计算软件集成在服务器里,用户提交数据,服务器端调用计算软件,最后返回结果到浏览器端。我写好了代码,在vs2010中运行没问题,在iis中布置不报错,就是不调用计算软件。代码如下:

        Process proc = new Process();
        string filename = Server.MapPath("App_Data\\cmd.exe");
        proc.StartInfo.FileName = filename;
      
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.RedirectStandardInput = true;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.RedirectStandardError = true;
        proc.StartInfo.CreateNoWindow = true;
        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//隐藏窗口,后台运行
        proc.EnableRaisingEvents = true;//在进程终止时,激发 Exited 事件。
        proc.Exited += new EventHandler(proc_Exited);//在进程退出时发生,用于跳转下一个页面

        proc.Start();
        proc.StandardInput.WriteLine("cd E:");
        proc.StandardInput.WriteLine("cd E:\\iFlora_protectedplants\\BLAST");
        string inputpath = Server.MapPath("App_Data\\input.txt");
        string outputpath = Server.MapPath("App_Data\\output.xml");
        proc.StandardInput.WriteLine("blastn -query " + inputpath + " -db protected_plants -out " + outputpath + "  -outfmt 5");
    
        proc.StandardInput.WriteLine("exit");
        string stroutput = proc.StandardOutput.ReadToEnd();
        proc.WaitForExit();
        proc.Close();
        proc.Dispose();

    网上很多人都说是iis权限的问题,大部分我都试过了,都不行。而且有些人说即使实现了,这种方式也很危险。在这里提问,我希望知道,怎么才能使这段代码执行。有没有更好的方法实现服务器端执行exe。希望得到详细一些的解答。先感谢大家! --------------------编程问答-------------------- 将代码放到Console程序Self-Host的WCF,然后服务端访问WCF得到结果
  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- 不放在app_data目录就行了。 --------------------编程问答-------------------- 网站的的运行账号是network service或者iis_iuser defaultapppool之类,权限略低,exe之类不一定能执行的起来,一般没这么办事的,要网站程序调用本机exe取结果一般都是通过socket来联系。 --------------------编程问答-------------------- 应该可以的,我知道有人调用ffmpeg.exe处理视频:

http://www.codeproject.com/Articles/22070/Converting-extracting-preview-image-in-asp-net-via

cmd是系统命令,不用放到app data中,直接调用就可以了。 --------------------编程问答-------------------- 一般不是这种方式调用吗?

System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = @"C:\windows\system32\cmd.exe";
proc.Arguments = @"/c ping 192.168.20.98";
System.Diagnostics.Process.Start(proc);
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,