2013-02-27 193 views
2

我有一个带有.asmx扩展名的Web服务,它指向我的Web应用程序中的类。在应用程序启动时添加一些代码以输出调试日志后,我可以看到每次用户访问该页面时都会创建一个新的调试日志。ASMX服务共享单个类实例

我希望我可以配置这个Web服务只能使用一个实例。

这意味着,当第一个用户访问该站点时,它创建了我的web服务的一个实例,然后所有请求都通过同一个类路由,共享相同的状态。

这甚至可能吗?

+0

您需要Web服务的多个实例。否则,每个入站HTTP请求都会被其前面的任何请求阻塞。您可以使用静态变量来存储特定的信息 - 但要小心,以最大限度地减少您要保留的数据的使用。 – Mike 2013-02-27 01:41:38

回答

1

网站本质上是无国籍的。意思是,每个请求通常与任何其他请求无关。

也就是说,您可以将日志设置为您的global.asax文件中的静态变量。注意线程问题。您也可以查看Elmah

1

你似乎有一些问题。

首先,ASMX技术已经过时了,不应该用于新开发。应该使用WCF来代替。

接下来,是的,你可以有多个调用服务共享同一个类的实例。但是,除非线程安全,否则必须防止同时访问此类。您应该期望多个服务调用可以同时调用同一个类实例。

最后,ASMX不支持单件Web服务。您可以做的最好的做法是让多个服务电话共享同一个对象(小心锁定)。

+0

如果可以的话,我会使用WCF,但我正在尝试制作一个与旧系统兼容的系统。 – NoPyGod 2013-02-27 03:01:34

+0

为什么WCF不兼容? – 2013-02-27 03:02:53

+0

当你说WCF指的是.SVC扩展?或者是其他东西? – NoPyGod 2013-02-27 03:04:59