私たちのシステムが大きく依存しているサードパーティのライブラリが不十分に作成されているため、問題が発生しています。このライブラリはスレッド セーフではなく (いくつかのバグと静的変数のため)、別のスレッドで各ユーザー要求を処理する ASP.NET Web サービスで使用する必要があります。
この問題に対して多くの解決策を試しました。私の意見では、現時点での最善の解決策は、サブプロセスにリクエストを処理させることです。1 つのサブプロセスが 1 人のユーザーの要求をリッスンして処理するため、ユーザーごとにライブラリ コードへのアクセスを同期できます。これは、要求間で静的変数を共有する場合よりもはるかに優れています。
IPC 通信で受信した要求を、一からやり直さずに適切な WebMethods にルーティングするにはどうすればよいですか? 可能であれば、通常の ASP.NET Web サービスでこれを処理する .Net のクラスを使用したいのですが、それらの名前を見つけるのに苦労しています。
TL;DR : WebMethodAttribute でマークされたいくつかのメソッドを持つクラス MyWebService (System.Web.Services.WebService から継承) があり、作成した HttpRequest (または HttpContext) をそれに渡し、「次のように処理する」ように伝えたい現在のプロセスがコンソール アプリケーションであるにもかかわらず、実際の HTTP サーバーからこれを受信しています。」