【发布时间】:2020-03-18 07:54:29
【问题描述】:
我事先道歉,因为我看到很多人已经回答了这个问题,但我仍然找不到答案,我正在寻找。 我有一个静态类 哪个有静态构造函数
public static class AppSettingsWrapper
{
public static List<uspGetFilePath_Result> FilePaths = new List<uspGetFilePath_Result>();
static AppSettingsWrapper()
{
using (MakEntities db = new MakEntities ())
{
FilePaths = db.uspGetFilePath().ToList();
}
}
}
我正在通过这个函数访问这个属性 FilePaths
public static uspGetFilePath_Result GetUploadInfo(EnumHelper.FilePathDesc filePath)
{
try
{
return AppSettingsWrapper.FilePaths.Where(x => x.ID == Convert.ToInt32(filePath)).FirstOrDefault();
}
catch (Exception)
{
throw;
}
}
但有时当我调用此功能时,我会遇到此异常 'PQCTrack.Utility.AppSettingsWrapper' 的类型初始化程序引发了异常。
System.TypeInitializationException
内部异常 #1:MSG:底层提供程序在打开时失败。源:EntityFramework,文件:,方法:打开,线路:0 内部异常 #2:MSG:发生网络相关或特定于实例的错误,同时建立与 SQL Server 的连接。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接),源:.Net SqlClient 数据提供者,文件:,方法:TryGetConnection,行:0 内部异常 #3:MSG:网络路径是未找到,源:,文件:,方法:,行:
因此,每当出现此问题时,我都会重新启动 IIS 应用程序池,然后问题得到解决,它不会再次出现
当我看到错误日志时,我看到静态构造函数被多次调用, 因为它抛出错误 谁能告诉我问题出在哪里?
【问题讨论】:
-
嗯,除了你的实际问题/错误/在 cctor(又名静态构造函数)中执行未经检查的初始化任务非常危险。如果它抛出异常 - 就像这里,可能 - ,你的类型将在该应用程序域的生命周期内无法使用,并且任何访问都将受到
TypeInitializationException的欢迎。 -
感谢您的回复,但我正在使用,在进行数据库调用时使用块
-
我不是在谈论资源清理。如果您在执行查询时遇到连接问题,您应该遇到该问题。
-
好的,我不认为它是连接问题,因为每当这个问题出现时,我都会重新启动 IIS 的应用程序池,然后问题得到解决,它确实会再次出现
-
这可能是由于内存泄漏/未关闭的连接导致您的连接池耗尽
标签: c# sql-server asp.net-mvc entity-framework-6 iis-10