【问题标题】:INNER EXCEPTION #1: MSG: The underlying provider failed on Open. On Server内部异常 #1:MSG:底层提供程序在打开时失败。在服务器上
【发布时间】: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


【解决方案1】:

当静态构造函数出错时会发生 TypeInitializationException。它包装了来自静态构造函数的错误。它不能可靠地被困在静态构造函数之外。 我认为可能是当您调用方法db.uspGetFilePath() 或在构造函数new MakEntities() 中使用Sql 连接时。内部异常中的错误:“与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器”。 您必须验证您的 Sql 连接字符串。

【讨论】:

  • 这个错误是随机出现的,它没有修复,所以我不认为是 Sql 连接字符串问题
  • 我正在使用实体框架,所以 MakEntities 类是由 EF 自动生成的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-20
  • 2014-12-30
  • 2011-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多