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

私の体重は同じなので、これを使って解決しました

   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 に答える
0

コードはメモ帳アプリケーションを起動し、test.xml ファイルを正しく開きます。

WaitForExit メソッドを使用しているため、メモ帳アプリケーションは閉じるまで開いたままになります。

WaitForExit メソッドは、関連するプロセスが終了するまで無期限に待機するように Process コンポーネントに指示します。

MVC アクションで WaitForExit を本当に使用しますか?

WaitForExit について MSDN から引用した備考をお読みください。

WaitForExit() オーバーロードは、関連するプロセスが終了するまで現在のスレッドを待機させるために使用されます。このメソッドは、プロセスおよびイベント ハンドラーが終了するまで無限に待機するように Process コンポーネントに指示します。これにより、アプリケーションが応答を停止する可能性があります。たとえば、ユーザー インターフェイスを持つプロセスに対して CloseMainWindow を呼び出す場合、プロセスがメッセージ ループに入らないように記述されていると、関連するプロセスを終了するオペレーティング システムへの要求が処理されないことがあります。

注: .NET Framework バージョン 3.5 以前のバージョンでは、WaitForExit() オーバーロードは無期限ではなく、MaxValue ミリ秒 (約 24 日) 待機しました。また、以前のバージョンでは、最大 MaxValue 時間に達した場合、イベント ハンドラーが終了するのを待機しませんでした。

于 2012-07-16T19:23:23.873 に答える