如何在c#asp.net mvc中提示打开文件

时间:2012-07-16 19:10:13

标签: c# asp.net asp.net-mvc

我一直在努力实现这样的事情,但是等待退出会超时吗?

我的目标是在记事本中打开客户端计算机上的文件。下面的代码是我最初的代码,但只是学到了这只能在服务器上运行,而不是客户端。

    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文件。

3 个答案:

答案 0 :(得分:1)

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

您可以做的最好的事情是以file:///drive:/file.xml

格式创建文件的超链接

答案 1 :(得分:0)

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

记事本应用程序将保持打开状态,直到它关闭,因为您正在使用WaitForExit方法。

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

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

  

请阅读从MSDN获取的WaitForExit备注

     

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

     

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

答案 2 :(得分: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