Web サービス (WS) とコンソール アプリケーション (CA) があります。
WS はデータを受け取り、データベースに挿入します。CA はこのデータを読み取り、操作を実行します。同期は次のように機能します。WS には次のコードがあります。
MyProject.Web.MvcApplication.newDataServiceMessageSignal.Set()
newDataServiceMessageSignal が global.asax ファイルで宣言されている場所
public static EventWaitHandle newDataServiceMessageSignal;
また、application_start では、次の値が与えられます。
protected void Application_Start()
{
..
newDataServiceMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
..
}
CA には、常に true である while ループと、EventWaitHandle の WaitOne があります。
var newMessageSignal = new EventWaitHandle(false, EventResetMode.AutoReset, "MySignalName");
while(true)
{
newMessageSignal.WaitOne();
//Do Something Useful
}
私の問題は、IIS Express での実行中 (Visual Studio でのデバッグ中) にはこのコードは正常に動作しますが、アプリケーションを公開してデプロイしてから実行すると失敗することです。WS がシグナルを設定しても、CA は継続的に待機します (データベースのコミットとその成功の前に、WS がシグナルをステートメントとして設定すると想定しています)。なぜこのように振る舞うか、私には理解できません。
どんな助けでも感謝します、ありがとう。