由于我们的系统严重依赖于编写不佳的第三方库,我遇到了问题。这个库不是线程安全的(因为一些错误和静态变量),我需要在一个 ASP.NET 网络服务中使用它,它在一个单独的线程中处理每个用户请求。
我已经为这个问题尝试了很多解决方案。在我看来,目前最好的解决方案是让子流程处理请求。一个子进程将侦听和处理一个用户的请求,因此我可以以每个用户的方式同步对库代码的访问,这比我在请求之间共享静态变量时所能做的要好得多。
如何在不重新发明轮子的情况下将通过 IPC 通信接收到的请求路由到适当的 WebMethods?如果可能的话,我想使用 .Net 中的类在普通的 ASP.NET Web 服务中处理这个问题,但是我很难找到它们的名字。
TL;DR:我有一个 MyWebService 类(继承自 System.Web.Services.WebService),其中一些方法用 WebMethodAttribute 标记,我想将一个虚构的 HttpRequest(或 HttpContext)传递给它并告诉它“像处理它一样尽管当前进程是控制台应用程序,但您是从真正的 HTTP 服务器接收到的”。