1

我一直在尝试实现这样的东西,但它会在等待退出时超时?

我的目标是在记事本中打开客户端机器上的文件。下面的代码是我最初拥有的,但刚刚了解到这只适用于服务器,而不是客户端。

    public JsonResult Index()
    {
        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.FileName = "notepad";

        proc.StartInfo.Arguments =  @"\\share\test.XML";
        proc.Start();
        proc.WaitForExit();
    }

有没有办法做到这一点?

我要做的就是在客户端机器上打开 test.xml 文件。

4

3 回答 3

1

您在那里的代码将在服务器端执行;不在客户端。您无法从浏览器在客户端计算机上打开文件(或为此执行程序)。如果浏览器可以做到这一点,那将是一个主要的安全问题。

您可以做的最好的事情是创建一个指向该文件的超链接,格式为file:///drive:/file.xml

于 2012-07-16T19:13:53.387 回答
0

您的代码将启动记事本应用程序并正确打开 test.xml 文件

因为您使用的是 WaitForExit 方法,所以记事本应用程序将保持打开状态直到关闭。

WaitForExit 方法指示 Process 组件无限期地等待相关进程退出。

你真的想在 MVC 操作中使用 WaitForExit

请阅读从 MSDN 获取的关于 WaitForExit 的备注

WaitForExit() 重载用于使当前线程等待相关进程终止。此方法指示 Process 组件等待进程和事件处理程序退出的无限时间。这可能会导致应用程序停止响应。例如,如果您为具有用户界面的进程调用 CloseMainWindow,如果进程被写入永远不会进入其消息循环,则可能不会处理对操作系统终止关联进程的请求。

注意:在 .NET Framework 版本 3.5 和更早版本中,WaitForExit() 重载等待 MaxValue 毫秒(大约 24 天),而不是无限期地等待。此外,如果达到完整的 MaxValue 时间,以前的版本不会等待事件处理程序退出。

于 2012-07-16T19:23:23.873 回答
0

我的体重一样,所以我用这个解决了

   using System.Xml;

   XmlTextReader reader = new XmlTextReader(
   Server.MapPath("mycompany.xml"));

    reader.WhitespaceHandling = WhitespaceHandling.None;
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(reader);
    reader.Close();        
    lbNodes.Items.Add("XML Document");
    XmlNode xnod = xmlDoc.DocumentElement;
    AddWithChildren(xnod, 1);

您可以在此处查看完整示例 http://www.codeproject.com/Articles/4902/Reading-an-XML-file-using-NET

于 2012-07-16T19:24:09.350 回答