将我的移动服务部署到Azure后,由于此错误,对服务的调用失败:
No connection string named 'ApplicationEntities' could be found in the application config file.
该错误仅发生在Azure端。当我测试服务本地时,与远程数据库的连接没有问题。
我将我的解决方案分成几个项目:
像往常一样,我将在DataAccess程序集的app.config中生成的连接字符串复制到connectionStrings
- 我的web.config
元素(Web Api项目)中。
<connectionStrings>
<add name="ApplicationEntities" connectionString="<the connection string>" providerName="System.Data.EntityClient" />
</connectionStrings>
在Web部署设置中,我为&#34; ApplicationEntities&#34;选择了连接字符串。我使用和不使用选项测试它&#34;在运行时使用此连接字符串(更新目标web.config)。我总是得到同样的错误。
然后我好奇并通过ConfigurationManager
记录了可用的连接字符串,如下所示:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ConfigurationManager.ConnectionStrings.Count; i++)
{
sb.AppendLine(ConfigurationManager.ConnectionStrings[i].ConnectionString);
}
trace.Info(sb.ToString());
我有两个连接字符串:
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
Data Source=theserver.database.windows.net;Initial Catalog=thedb_db;User ID=theuser;Password=thepassword;Asynchronous Processing=True;TrustServerCertificate=False;
用户名和密码与管理门户中指定的用户名和密码有很大不同。 此外,EF-Metadata信息也会丢失。
我在本地测试时得到这个连接字符串:
data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
metadata=res://*/DataContext.ApplicationEntities.csdl|res://*/DataContext.ApplicationEntities.ssdl|res://*/DataContext.ApplicationEntities.msl;provider=System.Data.SqlClient;provider connection string=\"data source=theserveraddress,1433;initial catalog=thedb_db;persist security info=True;user id=theusername;password=thepassword;MultipleActiveResultSets=True;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;App=EntityFramework\"
我希望在Azure上运行时获得相同的连接字符串。知道出了什么问题吗?
更新
我刚刚去远程调试服务(see here)。当我在文本编辑器中打开下载的发布配置文件时,我发现有一个属性SQLServerDBConnectionString
- 包含在部署时总是被强制的连接字符串 - 使用相同的用户名和密码我不知道它存在的。
我试图覆盖这个连接字符串,但它没有帮助。这种联系仍然活跃。
更新2/2014年5月29日:
似乎在此期间,天蓝色移动团队已经修复了错误。仍然使用数据库第一种方法运行相同的代码,它现在正在工作。非常感谢!
答案 0 :(得分:2)
我自己尝试使用数据库第一种方法与dot net后端移动服务&amp;遇到了和你一样的问题。进一步挖掘,以下是我的观察:
azure网站中有一个选项可以选择自定义SQL提供程序来帮助创建自定义连接字符串,但是,此选项不适用于Azure管理门户中的dot net后端移动服务。
P.S。发帖作为答案,因为我没有足够的评论点......
答案 1 :(得分:1)
只想提供一段时间以来我一直在关注的更新,并认为我第一次也看到它。我不知道发生了什么,但是想让你知道我们确实在看它。
的Henrik
答案 2 :(得分:0)
(我没有足够的评论点,所以不得不这样做作为答案)
亨利克,我有同样的问题。如果我ftp到该框,我可以看到web.config具有正确的连接字符串,但它失败,因为尝试使用SQLServerDBConnectionString属性中的用户名(OoWUqr ****登录)。是否有可能让我知道它在寻找连接字符串的顺序以及在哪里?如果它不能使用其他用户停止它,我是否可以通过移动服务允许他们使用正确的数据库?
由于
˚F