我有一个服务类实现如下契约(Contract):
interface IContractFoo
{
void Foo();
}
Class ServiceFoo() : IContractFoo
{
public static ServiceFoo()
{
Log("Static constructor called");
}
void Foo()
{
Log("Foo called");
}
}
我发现每次调用 Foo API 时,都会调用静态构造函数。所以,日志看起来像这样 -
Static constructor called
Foo called
Static constructor called
Foo called
这不应该发生,因为这是一个静态构造函数。知道可能出了什么问题吗?
感谢您的帮助
最佳答案
默认情况下,WCF 服务使用“每次调用”模型。我不认为用 static
标记构造函数会改变这种行为。您可以使用 ServiceBehavior
属性或通过更改与此服务关联的 web.config 文件中的 ServiceBehavior 设置来更改此设置。
以下几篇文章可能会帮助您确定哪种模型适合您的服务:
关于每次调用时都会调用 WCF 服务类静态构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640305/