【问题标题】:No connection string named xxx' could be found in the application config file在应用程序配置文件中找不到名为 xxx' 的连接字符串
【发布时间】:2016-12-07 10:21:49
【问题描述】:

我的解决方案有三个项目:

  • 将 edmx EF Core 用作 Oracle 数据库的 DAL 的 dll 库
  • 引用上述 dll 的业务逻辑库
  • 引用业务逻辑 dll 的 ASP.NET Core Web 服务应用程序

所有三个都针对相同版本的 .NET 框架:4.6.1

为了让 web 服务工作并访问数据库,我必须将 App.config 文件从 EntityFramework 项目复制到 Webservice 项目。

在我决定从 ASP.NET 5 RC1 迁移到 ASP.NET Core 1.0 之前,一切正常。

迁移后 web.config 出现在 webservice 项目根目录中(除了 wwwroot 文件夹下的那个),我遇到了提到的错误 here 显然是因为现在我有两个配置文件(app. config 和 web.config),删除 app.config 的解决方案是有意义的。

所以我将 app.config 中的所有部分复制到 web.config 并删除了 app.config,这解决了我的第一个问题,但现在每当我尝试使用 DBContext 时,我都会遇到这个问题例外:

“System.InvalidOperationException”类型的异常发生在 EntityFramework.dll 但未在用户代码中处理

附加信息:没有命名的连接字符串 'DBEntities' 可以在应用程序配置文件中找到。

我注意到在发布应用程序后,文件 myApp.exe.config 不再具有连接字符串。我的问题很简单,如何让应用程序在 web.config 中查找连接字符串?!

我发现了一些类似的问题,例如 this one、thatthat 但他们都没有回答我的问题。

【问题讨论】:

  • Webservice 是指 SOAP/WCF? ASP.NET Core iirc 不支持此方案。 ASP.NET Core 仅支持 Rest (WebApi)、MVC 和 SignalR(仍处于早期测试阶段)
  • @Tseng VS2015 中没有 WebAPI 项目类型。不都是 MVC 中的 WebAPI 吗?
  • 它们都在同一个包中,并且开箱即用。尽管如此,WebApi 和 MVC 在使用上还是有细微的差别:WebApi 路由通常没有动作并且使用 http 动词,并且返回的 IActionResult 类型在 WebApi 中是不同的。但是仍然没有答案,您将哪些技术用作“Webservice”。 Webservice 通常指的是 WCF/Soap 这就是我问的原因,因为它在 ASP.NET Core 项目中不受支持
  • @Tseng 它是基于 http 的 webapi 而不是 wcf

标签: .net entity-framework asp.net-core


【解决方案1】:

连接字符串必须在appsettings.json中定义

{
  "ConnectionStrings": {
    "DefaultConnection": "< connection string value here >"
  },

.. other stuff here
}

更多信息请访问https://docs.asp.net/en/latest/fundamentals/configuration.html

【讨论】:

  • 我以前试过这个,但没有用。我有两个连接字符串,我使用只读复制数据库进行查询以提高性能,它是在创建上下文时根据数据操作的需要决定的。
  • 连接字符串的名字被传递给DBContext的构造函数
【解决方案2】:

我也遇到了同样的问题,答案是它有问题!在我的情况下,我的 DbContext 子类在 app.config 中需要一个连接字符串,所以这是您必须在 &lt;configuration&gt;

下提供的内容
  <connectionStrings>
    <add name="NameOfMyContext" connectionString="RemovedForSecurity" providerName="System.Data.SqlClient" />
  </connectionStrings>

现在,构建并运行项目。进入 /bin/Debug/ 文件夹,直到找到 yourappname.exe 和 yourappname.exe.config 文件。检查 yourappname.exe.config 文件。这是您项目中各种 xml 配置文件的奇怪混合。确保您的连接字符串在那里。

我对该文件的体验非常糟糕。执行“清理”不会删除它,因此您可能会在删除项目中对连接字符串的所有引用的情况下结束(即从 app.config 中删除它),并且您的应用程序仍然可以工作,因为字符串仍然存在奇怪的 .exe.config 文件。

【讨论】:

    【解决方案3】:

    如果您有多个项目,请将带有 web.config 文件的项目设置为启动项目。

    【讨论】:

      【解决方案4】:

      您收到该异常的另一种情况是,当您在 MVC 项目的 web.config 中的连接字符串后写入 &lt;clear&gt; 标记时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-14
        • 2012-09-19
        • 2022-01-11
        • 1970-01-01
        • 2013-03-28
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多