【问题标题】:No connection string could be found in the application config file (But it Does Exist)在应用程序配置文件中找不到连接字符串(但它确实存在)
【发布时间】:2015-07-03 11:08:35
【问题描述】:

我有一个发布到 IIS 的 Web API 项目,它抱怨我的配置文件中没有具有特定名称的连接字符串。我验证了 我的 web.config 文件中有一个条目 的 web API 项目,所以它一定不会捡起它。我能够使用 Visual Studio 2013 在本地运行相同的 web.config 文件。

我很清楚引用的启动项目必须具有连接字符串,这就是我的情况。我验证了我的 Web API 项目具有以下连接字符串(与我在本地计算机上成功使用的连接字符串相同)。

<connectionStrings>
    <add name="MyDB" connectionString="metadata=res://*/MyDB.csdl|res://*/MyDB.ssdl|res://*/MyDB.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=localhost\MyDB;initial catalog=MyDB;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>

它是否在抱怨服务器上其他地方的另一个配置文件?

我已经尝试了this question 中的建议,但没有成功。

【问题讨论】:

  • 我正在尝试在 Web API 启动类 WebApiConfig.Register() 期间读取 web.config,如果这样会有所不同吗?
  • 我知道它是什么。我必须从 Web API 启动访问 web.config 文件,但调用启动注册的 Global.asax 位于高一个目录,因此找不到该文件。
  • 请发布确切的异常、异常消息和异常堆栈跟踪。
  • 这不再是问题。它掩盖了不同但相关的真正问题。我在这里打开它:stackoverflow.com/questions/29856864/…

标签: entity-framework asp.net-web-api iis-7 web-config asp.net-web-api2


【解决方案1】:
  1. 如果您的项目发布在 IIS 上的文件夹中,并且配置文件存在于最上面的文件夹中,则这些值可能会发生冲突。
  2. 如果存在另一个配置文件,请在发布时尝试启用“删除目标位置的附加文件”选项。此选项位于设置 -> 文件发布选项下

【讨论】:

  • 在 IIS 中映射的顶层文件夹包含 bin、Global.asax 和 packages.config。 bin里面只有一个web.config文件。
  • IIS 在您的本地或远程计算机上吗?您说:“它抱怨我的配置文件中没有具有特定名称的连接字符串。”,您能否更新问题以便我们可以看到此错误消息的屏幕截图?
【解决方案2】:

bin里面只有一个web.config文件——

您的 web.config 文件应与 Global.asax、packages.config 位于同一文件夹中,而不是 bin 文件夹中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2015-07-17
    相关资源
    最近更新 更多