none
FormView.ItemUpdated使用時、DB更新後、バッチファイルが2重起動してしまう RRS feed

  • 質問

  • みなさま、こんにちわ。

    FormView.ItemUpdatedイベントで、DBの更新後、バッチファイルを実行する処理を書いています。

    このバッチが2回起動してしまい、困っています。1回だけ実行するにはどうすればいいのでしょうか?

    Protected Sub バッチファイル実行(ByVal sender As Object, ByVal e As FormViewUpdatedEventArgs) Handles FormView1.ItemUpdated
    
            Dim psInfo As New ProcessStartInfo()
            psInfo.FileName = "E:\test.bat"
            psInfo.CreateNoWindow = True
            psInfo.UseShellExecute = False
    
            Process.Start(psInfo)
            
    End Sub

    よろしくおねがいします。


    mai akiyama

    2014年4月25日 0:47

回答

  • FormView1.ItemUpdated は一回しか発生していないのでしょうか? まずそれを確認してください。

    一回しか発生してないとすると、問題はバッチファイルの中にありそうな気がします。問題がバッチファイルにあるとすると、ここで聞かれても誰も答えられないのでは?


    ところで、ASP.NET 開発サーバーか IIS のどちらを使って開発しているのでしょう? ASP.NET 開発サーバーを使っているとすると、開発環境ではそのバッチファイルは動いても、運用環境で IIS に移すと場合によっては Session 0 分離の問題で動かないことがあるのはご承知でしょうか。

    Session 0 分離については、以下のページの「6. Session 0 分離」のセクションを見てください。

    ASP.NET 開発サーバーと IIS
    http://surferonwww.info/BlogEngine/post/2011/11/18/ASPNET-development-server-and-IIS.aspx


    【追伸】

    最初にお願いすべきでしたが・・・

    質問には最初にご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバー使っているならそれは何か、ASP.NET 開発サーバー or IIS Express or IIS のどれを使っているか、使っているブラウザ、Web アプリケーションプロジェクトか Web サイトプロジェクトかなど)を書いてください。

    面倒なことを言うと思うかもしれませんが、タイムリーに的を得た回答が得やすくなるということで、質問者さんにメリットのあることです。

    • 編集済み SurferOnWww 2014年4月25日 2:13 追伸追加
    • 回答としてマーク あきまい 2014年4月25日 5:42
    2014年4月25日 2:06

すべての返信

  • FormView1.ItemUpdated は一回しか発生していないのでしょうか? まずそれを確認してください。

    一回しか発生してないとすると、問題はバッチファイルの中にありそうな気がします。問題がバッチファイルにあるとすると、ここで聞かれても誰も答えられないのでは?


    ところで、ASP.NET 開発サーバーか IIS のどちらを使って開発しているのでしょう? ASP.NET 開発サーバーを使っているとすると、開発環境ではそのバッチファイルは動いても、運用環境で IIS に移すと場合によっては Session 0 分離の問題で動かないことがあるのはご承知でしょうか。

    Session 0 分離については、以下のページの「6. Session 0 分離」のセクションを見てください。

    ASP.NET 開発サーバーと IIS
    http://surferonwww.info/BlogEngine/post/2011/11/18/ASPNET-development-server-and-IIS.aspx


    【追伸】

    最初にお願いすべきでしたが・・・

    質問には最初にご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバー使っているならそれは何か、ASP.NET 開発サーバー or IIS Express or IIS のどれを使っているか、使っているブラウザ、Web アプリケーションプロジェクトか Web サイトプロジェクトかなど)を書いてください。

    面倒なことを言うと思うかもしれませんが、タイムリーに的を得た回答が得やすくなるということで、質問者さんにメリットのあることです。

    • 編集済み SurferOnWww 2014年4月25日 2:13 追伸追加
    • 回答としてマーク あきまい 2014年4月25日 5:42
    2014年4月25日 2:06
  • SurferOnWwwさま

    さっそくのご回答ありがとうございます。

    ご指摘のとおり、バッチというか...自分の環境の固有の問題でした。

    次回から質問するさいは、自分の環境を書くようにします。

    また、「Session 0 分離」について教えていただきありがとうございます。

    ASP.NET 開発サーバーで動作を確認しているので、実際のIISの環境に移したとき

    バッチファイルが動かない可能性があるのですね。(試してみます)


    mai akiyama

    2014年4月25日 5:53
  • SurferOnWww さま

    やはりIIS(7.5)に移行したら、バッチが正常に動かなくなりました。

    バッチファイルの中身(WORDを開く)
    start WINWORD.exe

    タスクマネージャを見るとWORDのプロセスは起動しているのですが、
    WORDの画面が表示されない状態です。(ASPのWebアプリが動いているサーバ上です。)

    「Session 0 分離」の回避策みたいなものは、ないのでしょうか?
    よろしくお願いします。

    【環境】
    Windows 7 Professional ServicePack1
    Microsoft Visual Web Developer 2010 Express
    Microsoft SQL Server 2008  Express ServicePack1
    ASP.NET4.0 / VisualBasic
    ASP.NET 開発サーバー
    Web サイトプロジェクト


    mai akiyama

    【追記】実際のバッチファイルは、WORDではなくて別のアプリケーションのEXEファイルです。そのEXEファイルをサーバ上で実行し、サーバ上にアプリケーションの画面を表示したいのです。




    2014年4月25日 8:24
  • >「Session 0 分離」の回避策みたいなものは、ないのでしょうか?

    100% 絶対ないとまで言い切る自信はありませんが、ないと思います。少なくとも自分は知りません。

    というより、Office 関係のアプリのような、対話型アプリを Web サーバーで動かすこと自体が無茶だと思います。

    Office のサーバーサイド オートメーションについて
    http://support.microsoft.com/kb/257757/ja

    そもそも、Word の画面をサーバーで表示しても、クライアントは見れないので意味ないのでは?

    表題の質問と違ってきたので、これ以上 Web サーバー上で Word を動かすための質問をするなら、別に新たにスレッドを立てて質問するようにしてください。

    2014年4月25日 8:49
  • SurferOnWwwさま

    すみません。自分の環境の下に追記したのですが、実際のバッチファイルはOfficeのアプリを実行するものではないです。

    質問用の例としてWORDをあげました。

    実際は、サーバ側にとある画面を表示させるアプリケーションのEXEファイルです。

    サーバ側に画面が表示されるバッチファイル(EXEファイル)を実行した時、プロセスは起動しますが画面が表示されない

    という質問なので、表題の質問とかけ離れているようでしたら別の新しいスレッドを立てたいと思います。

    ありがとうございました。


    mai akiyama



    2014年4月25日 15:04
  • > 質問用の例としてWORDをあげました。

    そういうのは例として不適切だと思いますけど。

    > 表題の質問とかけ離れているようでしたら別の新しいスレッドを立てたいと思います。

    新たに別スレッドを立てて質問することをお勧めします。その際は、できるだけ正確かつ適切な情報を提供してください。

    表示するのが word でないとしても、Web アプリでサーバーに何かを表示するという無意味なことが理解不能なので、そのあたりを閲覧者が理解・納得できるように説明することをお勧めします。

    2014年4月25日 16:10