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

4
我的webservice构造函数在每次调用webmethod时都会被调用。这导致我添加一些新功能时出现了一些问题,我无法弄清楚我做错了什么。我唯一new webservice的地方是在global.asax.cs的Application_Start中,但如果我删除new webservice的代码,它仍然会在每次调用webmethod时调用构造函数。

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

我正在使用ASP.NET 1.1中的c#。有什么想法吗?

编辑:
我正在尝试创建一个心跳线程来轮询Windows服务。我试图在哈希表中保存结果(多个线程轮询多个服务)。我已更改webmethod(因为它曾经轮询Windows服务)以从哈希表中获取结果。我们试图增加此webmethod调用的速度。
3个回答

19
每当您调用Web方法时,都会创建Web服务的一个新实例-这是预期的行为。Web服务是无状态的,这意味着在Web方法调用之间不保留服务实例,并且因此您不能将任何状态存储在Web服务的成员(字段、属性)中。
如果您想在Web方法调用之间保存一些值/状态,则必须使用ASP.NET会话或数据库来实现。
有关详细信息,请参见此问题:Is this supposed to work this way?

非常感谢,这是最好的答案,真的非常感谢! - frogatto

0

嗯...很抱歉这是设计上的问题。您能描述一下遇到的问题以及您想要实现什么吗?我认为您需要在这里重新设计一下。


编辑了原始帖子以描述我们试图做什么。 - Jeremy Cron

0

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


不幸的是,我们在这个版本中被“卡住”了1.1框架。 - Jeremy Cron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接