为什么每次调用webmethod时都会调用我的WebService构造函数?

时间:2009-05-06 15:34:35

标签: c# asp.net web-services constructor .net-1.1

每次调用web方法时,都会调用我的webservice构造函数。这引起了一些我正在添加的新功能的问题,我无法弄清楚我做错了导致这种情况。我在新建web服务的唯一地方是在global.asax.cs的Application_Start中,但是如果我将代码移到new webservice,它每次调用web方法时仍会调用构造函数。

我通过浏览到.asmx文件并以这种方式调用webmethod来测试这个,我还创建了一个测试控制台应用程序,该应用程序具有对webservice的引用并将以这种方式调用方法。这两个都给出了相同的结果。

我在ASP.NET 1.1中使用c#。有任何想法吗?

修改
我正在尝试创建一个轮询Windows服务的心跳线程。我试图将结果保存在哈希表中(多个线程轮询多个服务)。我已经更改了webmethod(用于轮询Windows服务)以从哈希表中获取结果。我们正在努力提高此webmethod调用的速度。

3 个答案:

答案 0 :(得分:18)

每当调用Web方法时,都会创建一个新的Web服务实例 - 这是预期的行为。 Web服务是无状态的,这意味着Web方法调用之间的服务实例不会保持活动状态,因此您无法在Web服务的成员(字段,属性)中存储任何状态。

如果要在Web方法调用之间保存某些值/状态,则必须使用ASP.NET会话或数据库来实现此目的。

有关详细信息,请参阅此问题:Is this supposed to work this way?

答案 1 :(得分:0)

呃...这有点像设计我害怕。你能描述一下你遇到的问题以及你想要实现的目标,我认为你需要在这里重构一下你的设计。

答案 2 :(得分:0)

您还可以切换到支持有状态服务的WCF

相关问题