【问题标题】:Dapper is throwing System.Data.SqlClient.SqlConnection exception after upgrading System.Data.SqlClient to version 4.5.0-preview2将 System.Data.SqlClient 升级到版本 4.5.0-preview2 后,Dapper 抛出 System.Data.SqlClient.SqlConnection 异常
【发布时间】:2017-11-21 19:40:50
【问题描述】:

我最近将我的一个 ASP.NET Core 应用程序从 net461 应用程序升级到 ASP.NET Core 2.0 应用程序,因为过去唯一阻碍我的是 System.Transactions(现在受支持)。

升级后我在访问任何使用以下功能的函数时遇到错误:

protected static TransactionScope GetTransactionScope()
{
    TransactionOptions transactionOptions = new TransactionOptions
    {
        IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted,
        Timeout = TransactionManager.MaximumTimeout
    };
    return new TransactionScope(TransactionScopeOption.Required, transactionOptions);
}

错误:

不支持在环境事务中登记。

根据我的谷歌研究,我在 GitHub 上看到了一些与此相关的未解决问题,他们都说将 System.Data.SqlClient 升级到最新的预发行版可以解决问题。

我相信这解决了这个问题,但又导致了另一个问题。我在我的项目中使用 Dapper v1.50.2,我认为它无法使用 System.Data.SqlClient 的预发布版本,因为我现在收到以下错误:

“System.Data.SqlClient.SqlConnection”的类型初始化器抛出 一个例外

有谁知道我如何使用 Dapper 并摆脱这个 Ambient 事务错误?我不确定在发生此类错误时如何移植 System.Transactions。

【问题讨论】:

    标签: c# asp.net asp.net-core dapper asp.net-core-2.0


    【解决方案1】:

    我最近解决了这个问题。 首先,在你的 Web.csproj 中替换

    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
    

     <PackageReference Include="Microsoft.AspNetCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Antiforgery" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.ApplicationInsights.HostingStartup" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Core" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Facebook" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Google" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OAuth" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authentication.Twitter" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authorization" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Authorization.Policy" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.AzureAppServices.HostingStartup" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.AzureAppServicesIntegration" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Cors" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Cryptography.Internal" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.DataProtection" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.DataProtection.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.DataProtection.AzureStorage" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.DataProtection.Extensions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Hosting.Server.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Html.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Extensions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Http.Features" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.HttpOverrides" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore.Localization" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Localization.Routing" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.MiddlewareAnalysis" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Abstractions" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.ApiExplorer" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Cors" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.DataAnnotations" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Xml" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Localization" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Extensions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.TagHelpers" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.ViewFeatures" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.NodeServices" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.Owin" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Razor" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Language" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Runtime" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.ResponseCaching" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.ResponseCaching.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.ResponseCompression" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Rewrite" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Routing" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Routing.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.HttpSys" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Core" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Https" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.Session" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.SpaServices" Version="2.0.2" />
    <PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="2.0.1" />
    <PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.1" />
    <PackageReference Include="Microsoft.CodeAnalysis.Razor" Version="2.0.1" />
    <PackageReference Include="Microsoft.Data.Sqlite" Version="2.0.0" />
    <PackageReference Include="Microsoft.Data.Sqlite.Core" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.AzureKeyVault" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.DiagnosticAdapter" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Composite" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.FileProviders.Physical" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.FileSystemGlobbing" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.Extensions.Identity.Core" Version="2.0.1" />
    <PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="2.0.1" />
    <PackageReference Include="Microsoft.Extensions.Localization" Version="2.0.1" />
    <PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="2.0.1" />
    <PackageReference Include="Microsoft.Extensions.Logging" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.AzureAppServices" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Configuration" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.EventSource" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Logging.TraceSource" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.ObjectPool" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.Primitives" Version="2.0.0" />
    <PackageReference Include="Microsoft.Extensions.WebEncoders" Version="2.0.0" />
    <PackageReference Include="Microsoft.Net.Http.Headers" Version="2.0.1" />
    <PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.1" />
    

    在这个包引用中,我删除了关于 EntityFramework 和 SqlServer 缓存的所有引用。 然后,添加对旧 System.Data.SqlClient 的引用

    <PackageReference Include="System.Data.SqlClient" Version="4.3.0" />
    

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      我想与问题消息分享我的解决方案:

      “Microsoft.Data.SqlClient.SqlConnection”的类型初始化器 抛出异常。

      Microsoft.Data.SqlClient.SqlConnectionFactory”也出现在问题中。

      这使用 Dapper 或 Microsoft.Data.SqlClient 库出现。 让我告诉你,我有两个 C# 项目:

      1. ConnectionToDB(2.中使用的项目)
      2. ASP.NET Core 应用程序

      我发现的问题是 1. 有所有必要的库/依赖项可以工作,但由于任何原因都无法正常工作。问题是Microsoft.Data.SqlClient 必须在 2. 内才能工作。我不知道为什么,但这可能对任何人都有帮助。

      问候!

      【讨论】:

        【解决方案3】:

        使用NuGet包管理器,搜索“System.Data.SqlClient”,安装最新的,异常消失。

        【讨论】:

          猜你喜欢
          • 2020-01-15
          • 2016-04-30
          • 2012-06-15
          • 1970-01-01
          • 2016-10-31
          • 2020-11-21
          • 2018-09-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多