【问题标题】:Unable to load DLL 'Microsoft.Data.SqlClient.SNI.x64.dll'无法加载 DLL 'Microsoft.Data.SqlClient.SNI.x64.dll'
【发布时间】:2021-06-09 13:07:21
【问题描述】:

我有两个已发布的环境,一个用于测试,一个用于实时。 我发布的项目在测试环境中工作。没有任何问题,但是一旦我将它部署在实时环境中。 我收到以下错误:

ERROR 2021-06-08 16:45:34,415 455867ms ysomeController MoveNext           - System.TypeInitializationException: The type initializer for 'Microsoft.Data.SqlClient.TdsParser' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Microsoft.Data.SqlClient.SNILoadHandle' threw an exception. ---> System.DllNotFoundException: Unable to load DLL 'Microsoft.Data.SqlClient.SNI.x64.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at Microsoft.Data.SqlClient.SNINativeManagedWrapperX64.SNIInitialize(IntPtr pmo)
   at Microsoft.Data.SqlClient.SNILoadHandle..ctor() in H:...\Microsoft\Data\SqlClient\TdsParserSafeHandles.cs:line 19
   at Microsoft.Data.SqlClient.SNILoadHandle..cctor() in H:...\Microsoft\Data\SqlClient\TdsParserSafeHandles.cs:line 17
   --- End of inner exception stack trace ---
   at Microsoft.Data.SqlClient.TdsParser..cctor() in H:...\Microsoft\Data\SqlClient\TdsParser.cs:line 177
   --- End of inner exception stack trace ---
   at Microsoft.Data.SqlClient.TdsParser..ctor(Boolean MARS, Boolean fAsynchronous) in H:...\Microsoft\Data\SqlClient\TdsParser.cs:line 38
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) in H:...\Microsoft\Data\SqlClient\SqlInternalConnectionTds.cs:line 1831
   at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) in 

更新:我还应该提到 Microsoft.Data.SqlClient.SNI.x64.dll 在部署后存在于 \bin 中。

【问题讨论】:

  • 请尝试Nuget包更新Microsoft.Data.SqlClient.SNI.x64并更新VS和OS最新版本。
  • 再次检查您的应用程序配置(如果使用 IIS,您实际上是作为 Web 应用程序运行)以验证 bin 文件夹实际上是在搜索二进制文件。

标签: .net sql-server asp.net-core


【解决方案1】:

所以问题出在已发布文件夹的 I/O 上。 通过将文件夹授予相关用户,问题就解决了。

【讨论】:

    【解决方案2】:

    在我的情况下,我在我的 mac 上通过并行在 Windows 上运行了一个本地的 rest api。我还看到了 bin 中的 dll。所以我检查了完整路径,即:\\Mac\Home\Documents\Projects... 我想也许该路径无法识别。所以我将我的项目直接复制到我的并行 Windows 上的另一个文件夹中:C:\users\ncu\projects... 之后一切正常。

    换句话说:检查您的 dll 的完整路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-26
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2012-01-12
      相关资源
      最近更新 更多