我有工作的网络服务。我不得不使用相同的代码并开发 REST Web 服务。我已经做了。当我调试它时,我发现了一件不寻常的事情。RESTWebService
调试项目时不会调用静态构造函数。
所有业务逻辑都在一个 DLL 中。WebService
和项目都RESTWebService
使用此 DLL。以下是 DLL 中存在的那些静态构造函数。这些构造函数初始化一些静态值。
//Logger.cs
static Logger()
{
try
{
m_LogLevel = ....;
m_LogFilePath = ....;
}
catch
{
throw;
}
}
//Common.cs
static Common()
{
ERROR_CODES = ....;
DB_CONNECTION_STRING = ....;
DB_NOTIFICATION_CONNECTION_STRING = ....;
DATA_PROVIDER_INVARIANT_NAME = ....;
}
在构造函数中初始化的所有值都声明为静态的。
在WebService
项目的情况下,它通过静态构造函数初始化所有静态变量。我已经通过保持这个静态构造函数的断点来验证它。它将命中所有静态构造函数,最后是我的 Web 服务的公共构造函数。
但这不会发生在RESTWebService
. 所有环境都和我的一模一样WebService
。但它没有命中静态构造函数的断点,而是直接命中了RestWebService
公共构造函数。
这背后的原因是什么?我是 WCF 的新手。RESTWebService 还有什么其他的吗?