我一直在努力实现这样的事情,但是等待退出会超时吗?
我的目标是在记事本中打开客户端计算机上的文件。下面的代码是我最初的代码,但只是学到了这只能在服务器上运行,而不是客户端。
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文件。
答案 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