2012-07-16 57 views
1

我一直在試圖實現這樣的東西,但它會超時等待退出?如何提示在c#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文件。

+1

'Process.Start'將執行的_SERVER side_。您想要在服務器中打開一堆記事本窗口的可能性非常小。 – Oded 2012-07-16 19:12:28

+0

@Oded啊,我是個傻瓜 – 2012-07-16 19:12:59

+0

你是想讓索引動作等待嗎? – HatSoft 2012-07-16 19:13:05

回答

1

您在那裏的代碼將在服務器端執行;不在客戶端。您無法從瀏覽器打開客戶端計算機上的文件(或執行某個程序)。如果瀏覽器可以這樣做,那將是一個主要的安全問題。

你可以做的最好的事情是無論在格式創建超鏈接到文件file:///drive:/file.xml

+0

是的,woops Oded指出,我猜測然後,我問如何在記事本中打開客戶端計算機上的文件 – 2012-07-16 19:15:52

+0

您無法強制在記事本中打開該文件。 *用戶*必須選擇他想用來打開文件的程序,或者OS系統將根據哪個程序被註冊爲該類型文檔的處理程序來自動決定。如果用戶將Explorer作爲XML文件的處理程序,那麼操作系統將用它來打開它,如果這是用戶選擇做的。 – Icarus 2012-07-16 19:18:43

0

您的代碼將啓動記事本程序,並打開正確

記事本應用程序將離開的test.xml文件因爲您正在使用WaitForExit方法,所以一直打開到關閉。

WaitForExit方法指示Process組件無限期地等待關聯的進程退出。

你真的想使用WaitForExit在你的MVC行動

請閱讀從MSDN採取WaitForExit

的WaitForExit()重載備註用於使當前線程等待直到關聯的進程終止。此方法指示 進程組件爲進程 和事件處理程序退出等待無限時間。這可能會導致應用程序停止響應 。例如,如果針對具有用戶界面的進程 調用CloseMainWindow,則如果寫入進程 永遠不會進入其消息循環,則可能無法處理向操作系統請求操作系統至 終止關聯進程。

注:在.NET Framework 3.5版和早期版本中,WaitForExit()重載等待的MaxValue毫秒(約 24天),而不是無限期的。此外,如果達到完整的MaxValue時間,以前的版本不會等待事件處理程序退出 。

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