0

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 がシグナルをステートメントとして設定すると想定しています)。なぜこのように振る舞うか、私には理解できません。

どんな助けでも感謝します、ありがとう。

4

0 に答える 0