none
ASP.NET開発サーバーを再起動したい。 RRS feed

  • 質問

  • サーバサイドにてIISを起動すると設定ファイルを読み込み、Webサービスを動作を初期化するプログラムを作成しました。

    テストプロジェクトにて、連続的にテストを実行する為に、テストメソッド毎に、設定ファイルの値を書き変えて、ASP.NET開発サーバーを再起動させたいのですが、何か良い方法等ありましたらお教え頂きたいのですが、よろしくお願いいます。

    2006年8月4日 8:21

すべての返信

  • 試してませんが、UnloadAppDomain()で出来ませんでしょうか?
    2006年8月4日 8:56
    モデレータ
  • すばやいお返事ありがとうございます。

    早速試して見ます。ためし終わったらフィードバックさせて頂きます。

    2006年8月4日 9:12
  • ASP.NETの開発サーバって

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\WebDev.WebServer.EXE

    を起動してるんじゃないかと思います。
    一度起動したらVS(やVWD)を閉じるまで起動しっぱなしだから、UnloadAppDomainでは制御できないんじゃないかな。

    そか、それぞれのテストの中で

    • 上記exeを実行する
    • 実行時に指定するポートを使い、テストしたいURLにアクセスする
    • テスト
    • 上記exeを終了する

    というのを繰り返すことでいけるかもしれませんね。
    自動でやるのは難しそうだけど。

    #上記exeはVSかVWDをインストールしていないと存在しないと思います。

    2006年8月4日 9:24
  • おっしゃる通りでした。
    UnloadAppDomainでは制御できませんでした。

    実際試したところ終了している様子がなかったので、UnloadAppDomainを呼んだあとにSleepを仕掛けて、タスクマネージャで、WebDev.WebServer.EXEがプロセスに残り続けるのを確認しました。

    やはり自動は難しいかも知れませんね。もうすこしがんばってみます。

    2006年8月4日 10:14
  • まずなぜしたいのか教えてほしいなぁ
    2006年8月5日 12:48
  • >まずなぜしたいのか教えてほしいなぁ

    目的は、サーバー起動時に設定ファイルを読み込む機能と、その読み込んだ情報を利用する機能の機能間結合の結合テストをしたい為です。
    自動化できれば、人の手間が減る分効率化できると考えましたので、検討中です。

    #中博俊さま ご指摘ありがとうございます。

    2006年8月7日 0:35
  • であればWeb.configを書き換えてやることにより強制的にWebアプリケーションとしては再起動してくれると思います。
    2006年8月7日 8:58
  • Web.configをテストプログラムから書き変える方法は試しましたが、結論から言うとうまくいきませんでした。

    うまくいかない現象を説明しますと、

    各テストを一つずつ、テストビューから別々に起動すると期待通りに正常終了するテストがあります。
    これらのテストを連続実行すると、Web.configの内容が読み込めず、エラーとなる現象が発生します。
    (正確には、クライアントサイドへその内容を転送する処理があるのですが、正しいsoupメッセージとして転送できず、System.InvalidOperationExceptionが発生します。)
    Webアプリケーションの再起動とWeb.configの書き換えがうまく同期がとれないからの様です。

    ASP.NET開発サーバーの再起動を毎回してあげれば、うまく同期が取れるのではと仮説を立て、ASP.NET開発サーバーの再起動の方法を調べたしだいです。

    #説明不足で、どうもすみませんでした。

    最悪、一つずつ手で実行して行けば(量が膨大なので大変ではありますが)、テストできます。
    ASP.NET開発サーバーの再起動ができないと困るというわけではありませんので、別の手段がないか検討してみます。

    2006年8月7日 10:41
  • 実際やってみてだめだったのならあれですが、
    UnloadAppDomain でうまくいくんじゃないかって気もするんですが…

    プロセスが再起動していないことを確認されたようですが、それは目的のためには必ずしも必要ではないはずです。

    ※ところでWeb.configの書きかえってどんなタイミングでどこでやってみました?

    2006年8月8日 12:08
  • UnloadAppDomainの件ですが、
    残念なことに、実際にやってみてだめでした。

    >※ところでWeb.configの書きかえってどんなタイミングでどこでやってみました?

    テストメソッドのはじめに記述しております。その後すぐに初期化処理を呼び出すようにしております。
    UnloadAppDomainは各テストメソッドの最後に入れて試してみました。

     

    2006年8月11日 9:32