トップ回答者
FormView.ItemUpdated使用時、DB更新後、バッチファイルが2重起動してしまう

質問
-
みなさま、こんにちわ。
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
回答
-
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
すべての返信
-
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
-
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:31
-
>「Session 0 分離」の回避策みたいなものは、ないのでしょうか?
100% 絶対ないとまで言い切る自信はありませんが、ないと思います。少なくとも自分は知りません。
というより、Office 関係のアプリのような、対話型アプリを Web サーバーで動かすこと自体が無茶だと思います。
Office のサーバーサイド オートメーションについて
http://support.microsoft.com/kb/257757/jaそもそも、Word の画面をサーバーで表示しても、クライアントは見れないので意味ないのでは?
表題の質問と違ってきたので、これ以上 Web サーバー上で Word を動かすための質問をするなら、別に新たにスレッドを立てて質問するようにしてください。
-
SurferOnWwwさま
すみません。自分の環境の下に追記したのですが、実際のバッチファイルはOfficeのアプリを実行するものではないです。
質問用の例としてWORDをあげました。
実際は、サーバ側にとある画面を表示させるアプリケーションのEXEファイルです。
サーバ側に画面が表示されるバッチファイル(EXEファイル)を実行した時、プロセスは起動しますが画面が表示されない
という質問なので、表題の質問とかけ離れているようでしたら別の新しいスレッドを立てたいと思います。
ありがとうございました。
mai akiyama
- 編集済み あきまい 2014年4月25日 15:07