在Windows Azure(预览)管理门户您可以更改网站的配置选项(参见http://www.windowsazure.com/en-us/manage/services/web-sites/how-to-configure-websites/ #howtochangeconfig )。
目前,我设置连接字符串通过Web.Release.Config我的ADO.NET实体框架连接,但我想通过管理门户来进行设置,但不管我用什么,我总是用下面的错误结束:
指定的命名连接或者未在配置中发现的,而不是意在与EntityClient提供者,或不是有效的使用。
它定期连接字符串,即没有元数据键定义元数据和映射信息(CSDL,SSDL,MSL)工作。
这是我做的:
我去https://manage.windowsazure.com/#Workspaces/WebsiteExtension/Website/[MY-STAGING-SITE-NAME]/configure
在“连接字符串”我有一个键名为“ApplicationServices”,看起来像这样:
服务器= TCP:xxxxx.database.windows.net,1433;数据库= XXXXX;用户ID = XXXXX XXXXX @;密码= XXXXX; Trusted_Connection = FALSE;加密= TRUE;连接超时= 30;
这一个工程。
我有一个实体框架连接的另一个关键。 让我们把一个FooBarContext。 它看起来像这样:
元数据= RES:// /Models.FooBarContext.csdl|res:// /Models.FooBarContext.ssdl|res://*/Models.FooBarContext.msl;provider=System.Data.SqlClient;provider连接字符串=“服务器= TCP:fooserver.database.windows.net,1433;数据库= foobar的;用户ID = MYNAME @ fooserver;密码= XXXXXXXXXX; Trusted_Connection = FALSE;加密= TRUE;连接超时= 30;”
这会导致一个上述错误。 它是由在Web.Release.Config 工作值复制,针对" 由”所取代。
我曾尝试其它变化:针对" 不动,并在最后的元数据附加,但都没有效果。 我有一个第二个网站转载的问题。
我的问题的解决方案是从“SQL Azure的/ SQL服务器/ MySQL的/自定义”,为实体框架的连接字符串选择中选择“自定义”,而不是“SQL Azure的”,即使数据库不上SQL Azure上运行。
我不仅需要用双引号(或单引号),而不是"
(并选择型定制),但我也必须确保有在我的变换配置一个虚拟值。 我是更换整个的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.
除了上述的答案,有2件非常重要的事情:
- 你应该从“名称=的connectionString”在构造函数中删除“NAME =”:
公共MyEntities(字符串的connectionString):基地($ “NAME = {}的connectionString”){}
- 你应该留在app.config中的连接字符串的“复制”,而是用虚拟文本替换连接字符串,正确的连接字符串将来自Azure的加载。 这是需要的providerName一部分。 请阅读: https://mohitgoyal.co/2017/07/05/update-connection-string-for-entity-framework-in-azure-web-app-settings/comment-page-1/
我有同样的问题。 我解决了,把在web.config这ConnectionString的:
<add name="eManagerTurModelConnection" connectionString="metadata=res://*/ORM.eManagerFinanceModel.csdl|res://*/ORM.eManagerFinanceModel.ssdl|res://*/ORM.eManagerFinanceModel.msl;provider=System.Data.SqlClient;provider connection string="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"" providerName="System.Data.EntityClient" />
之后我删除我的网站的ConnectionString,工作,因为它没有得到,我在我的web.config中添加的连接字符串。
英语不好... =)
文章来源: How do I set an ADO.NET Entity Framework connection string via the Windows Azure (Preview) Management Portal?