2009-05-06 94 views
4

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

我已经通过浏览到.asmx文件并调用webmethod的方式测试了这一点,并且我还创建了一个测试控制台应用程序,该应用程序具有对webservice的引用并将调用这些方法。这两个结果都一样。

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

编辑:
我想创建心跳线程轮询一个窗口服务。我试图将结果保存在散列表中(多个线程轮询多个服务)。我已经改变了webmethod(因为它用于轮询windows服务)以从哈希表中获取结果。我们正在尝试增加此webmethod调用的速度。为什么我每次调用webmethod时都会调用WebService构造函数?

回答

18

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

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

详见这个问题:Is this supposed to work this way?

+0

非常感谢,真的是最好的答案,真的非常感谢你! – 2013-04-10 16:12:57

0

嗯...这是一种设计我害怕。你能描述一下你遇到的问题以及你想要达到的目标吗?我认为你需要在这里重新设计一下你的设计。

+0

编辑原始帖子来描述我们正在尝试做什么。 – 2009-05-06 15:57:08

0

你也可以切换到支持有状态服务的WCF

+0

不幸的是,我们被这个版本的1.1框架'卡住'了 – 2009-05-06 16:14:14

相关问题