2

Webアプリケーションのクラスを指す.asmx拡張子を持つWebサービスがあります。アプリケーションの起動時にデバッグログを出力するコードを追加すると、ユーザーがページにアクセスするたびに新しいデバッグログが作成されていることがわかります。

単一のインスタンスのみを使用するようにこのWebサービスを構成できることを望んでいました。

つまり、最初のユーザーがサイトにアクセスすると、Webサービスのインスタンスが作成され、その後のすべてのリクエストは同じクラスを経由して同じ状態を共有します。

これも可能ですか?

4

2 に答える 2

1

あなたはいろいろな問題を抱えているようです。

まず第一に、ASMX テクノロジはほとんど時代遅れであり、新しい開発には使用しないでください。代わりに WCF を使用する必要があります。

次に、はい、サービスへの複数の呼び出しでクラスの同じインスタンスを共有できます。ただし、スレッドセーフでない限り、このクラスへの同時アクセスを防止する必要があります。複数のサービス呼び出しが同時に同じクラス インスタンスを呼び出すことを想定する必要があります。

最後に、ASMX はシングルトン Web サービスをサポートしていません。最善の方法は、複数のサービス呼び出しをすべて同じオブジェクト (慎重にロック) で共有することです。

于 2013-02-27T02:56:58.913 に答える
1

Web サイトは本質的にステートレスです。つまり、各リクエストは通常​​、他のリクエストとは無関係です。

つまり、global.asax ファイルでログを静的変数として設定できます。スレッドの問題に注意してください。

あるいは、 Elmahを見ることもできます。

于 2013-02-27T01:31:20.810 に答える