在应用程序配置文件

时间:2016-08-02 07:18:27

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

我的解决方案有三个项目:
enter image description here

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

这三个目标都是相同版本的.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中查找连接字符串?!

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

4 个答案:

答案 0 :(得分:4)

我遇到了完全相同的问题,答案是他的错误!在我的例子中,我的DbContext子类期望在app.config中有一个连接字符串,所以这是你必须在<configuration>下提供的

  <connectionStrings>
    <add name="NameOfMyContext" connectionString="RemovedForSecurity" providerName="System.Data.SqlClient" />
  </connectionStrings>

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

我对该文件的体验非常糟糕。做一个&#34;清洁&#34;不会删除它,所以你可以在你删除项目中连接字符串的所有引用(即从app.config中删除它)的情况下,你的应用程序仍然有效,因为字符串仍然在奇怪的.exe.config中文件。

答案 1 :(得分:1)

必须在appsettings.json

中定义连接字符串
{
  "ConnectionStrings": {
    "DefaultConnection": "< connection string value here >"
  },

.. other stuff here
}

更多https://docs.asp.net/en/latest/fundamentals/configuration.html

答案 2 :(得分:1)

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

答案 3 :(得分:0)

除了收到该异常之外的另一种情况是,在MVC项目的web.config中的连接字符串之后写了<clear>标记。