每次调用时都会调用 WCF 服务类静态构造函数

标签 wcf static-constructor

我有一个服务类实现如下契约(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/

相关文章:

wcf - 离线客户端和发送至 azure 的消息

c# - 静态只读字段初始化程序与静态构造函数初始化

c# - 静态构造函数会降低访问静态方法的性能吗?

c# - 如何确保在不调用任何成员的情况下调用静态构造函数

c# - 将 LINQ 语句转换为通常的数据服务 URL

c# - 如何处理 WCF 异常(带代码的综合列表)

wcf - 从 IIS 托管服务解析主机名的任何已知问题

web-services - 使用 Windows 身份验证设置安全 SSL、WCF

.net-4.0 - 派生类的c++/cli静态构造函数未被调用

c# - CLR 如何处理静态类?