我有一个带有.asmx扩展名的Web服务,它指向我的Web应用程序中的类。在应用程序启动时添加一些代码以输出调试日志后,我可以看到每次用户访问该页面时都会创建一个新的调试日志。ASMX服务共享单个类实例
我希望我可以配置这个Web服务只能使用一个实例。
这意味着,当第一个用户访问该站点时,它创建了我的web服务的一个实例,然后所有请求都通过同一个类路由,共享相同的状态。
这甚至可能吗?
我有一个带有.asmx扩展名的Web服务,它指向我的Web应用程序中的类。在应用程序启动时添加一些代码以输出调试日志后,我可以看到每次用户访问该页面时都会创建一个新的调试日志。ASMX服务共享单个类实例
我希望我可以配置这个Web服务只能使用一个实例。
这意味着,当第一个用户访问该站点时,它创建了我的web服务的一个实例,然后所有请求都通过同一个类路由,共享相同的状态。
这甚至可能吗?
网站本质上是无国籍的。意思是,每个请求通常与任何其他请求无关。
也就是说,您可以将日志设置为您的global.asax文件中的静态变量。注意线程问题。您也可以查看Elmah。
你似乎有一些问题。
首先,ASMX技术已经过时了,不应该用于新开发。应该使用WCF来代替。
接下来,是的,你可以有多个调用服务共享同一个类的实例。但是,除非线程安全,否则必须防止同时访问此类。您应该期望多个服务调用可以同时调用同一个类实例。
最后,ASMX不支持单件Web服务。您可以做的最好的做法是让多个服务电话共享同一个对象(小心锁定)。
您需要Web服务的多个实例。否则,每个入站HTTP请求都会被其前面的任何请求阻塞。您可以使用静态变量来存储特定的信息 - 但要小心,以最大限度地减少您要保留的数据的使用。 – Mike 2013-02-27 01:41:38