29

在 Windows Azure(预览版)管理门户中,您可以更改网站的配置选项(请参阅http://www.windowsazure.com/en-us/manage/services/web-sites/how-to-configure-websites/ #howtochangeconfig)。

我目前通过 Web.Release.Config 为我的 ADO.NET Entity Framework 连接设置连接字符串,但我想通过管理门户设置它,但无论我使用什么,我总是会遇到以下错误:

指定的命名连接在配置中未找到,不打算与 EntityClient 提供程序一起使用,或者无效。

它适用于常规连接字符串,即没有定义元数据和映射信息的元数据键(csdl、ssdl、msl)。

这就是我所做的:

我去https://manage.windowsazure.com/#Workspaces/WebsiteExtension/Website/[MY-STAGING-SITE-NAME]/configure

在“连接字符串”下,我有一个名为“ApplicationServices”的键,如下所示:

Server=tcp:xxxxx.database.windows.net,1433;Database=xxxxx;User ID=xxxxx@xxxxx;Password=xxxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;

这个有效。

我有另一个用于实体框架连接的键。我们称它为 FooBarContext。它看起来像这样:

metadata=res:// /Models.FooBarContext.csdl|res:// /Models.FooBarContext.ssdl|res://*/Models.FooBarContext.msl;provider=System.Data.SqlClient;provider connection string="Server =tcp:fooserver.database.windows.net,1433;Database=foobar;用户 ID=myname@fooserver;Password=xxxxxxxxxx;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"

这会导致上述错误。它是从Web.Release.Config 中的工作值复制而来的,带有“” 替换为“。

我尝试了其他变体:使用 " 原封不动,最后附加了元数据,但无济于事。我已经用第二个网站重现了这个问题。

4

5 回答 5

52

我的问题的解决方案是从实体框架连接字符串的“SQL Azure/SQL Server/MySQL/自定义”选择器中选择“自定义”而不是“SQL Azure”,即使数据库确实在 SQL Azure 上运行。

[编辑]来自@matthew-steeples 的热门评论如下:

对于遇到相同问题的其他任何人,我会补充一点,有时配置文件将具有"而不是",并且 Azure 网站需要将其更改为"

于 2013-01-25T14:59:40.193 回答
14

在此处输入图像描述

代替

"

"

在连接字符串中。

于 2016-06-26T01:09:16.163 回答
5

我不仅必须使用双引号(或单引号)而不是"(并为类型选择自定义),而且我还必须确保我的转换配置中有一个虚拟值。我正在替换整个 connectionStrings 节点,但决定保留它并添加:

<add xdt:Transform="Replace" xdt:Locator="Match(name)" name="FooBarEntities" connectionString="temp" providerName="System.Data.EntityClient" />

没有这个,我收到以下错误:

The connection string 'FooBarEntities' in the application's configuration file does not contain the required providerName attribute.

于 2016-03-13T19:48:42.177 回答
0

除了上面的答案,还有两件非常重要的事情:

  1. 您应该在构造函数中从“name=connectionString”中删除“name=”:

公共 MyEntities(string connectionString) : base($"name={connectionString}") { }

  1. 您应该在 app.config 中保留连接字符串的“重复”,但将连接字符串替换为虚拟文本,将从 Azure 加载正确的连接字符串。这对于 providerName 部分是必需的。请阅读: https ://mohitgoyal.co/2017/07/05/update-connection-string-for-entity-framework-in-azure-web-app-settings/comment-page-1/
于 2018-01-18T15:25:35.463 回答
-1

我有同样的问题。我解决了,将这个连接字符串放入 web.config:

<add name="eManagerTurModelConnection" connectionString="metadata=res://*/ORM.eManagerFinanceModel.csdl|res://*/ORM.eManagerFinanceModel.ssdl|res://*/ORM.eManagerFinanceModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=<server>.database.windows.net;Initial Catalog=eManagerTur;Integrated Security=False;User ID=<user>;Password=<Password>;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

在我删除了我的网站的连接字符串之后,它工作了,因为它没有得到我在 web.config 中添加的连接字符串。

英语不好... =)

于 2013-11-07T03:56:43.817 回答