Azure移动服务 - 发布后找不到连接字符串

时间:2014-03-29 13:45:23

标签: c# entity-framework connection-string publishing azure-mobile-services

将我的移动服务部署到Azure后,由于此错误,对服务的调用失败:

No connection string named 'ApplicationEntities' could be found in the application config file.

该错误仅发生在Azure端。当我测试服务本地时,与远程数据库的连接没有问题。

我将我的解决方案分成几个项目:

  • Web Api
  • 商业逻辑
  • 数据访问(包含DbContext,数据库优先)
  • Common(包含由EF生成的实体)

像往常一样,我将在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日:

似乎在此期间,天蓝色移动团队已经修复了错误。仍然使用数据库第一种方法运行相同的代码,它现在正在工作。非常感谢!

3 个答案:

答案 0 :(得分:2)

我自己尝试使用数据库第一种方法与dot net后端移动服务&amp;遇到了和你一样的问题。进一步挖掘,以下是我的观察:

  1. 带有网络后端的azure移动服务必须仅使用代码优先方法。这将生成一个带元数据的专用连接字符串(以res :)开头
  2. 连接字符串的名称必须与下载默认样本待办事项应用程序时的名称相同。 Ms_TableConnectionString。
  3. azure网站中有一个选项可以选择自定义SQL提供程序来帮助创建自定义连接字符串,但是,此选项不适用于Azure管理门户中的dot net后端移动服务。

    P.S。发帖作为答案,因为我没有足够的评论点......

答案 1 :(得分:1)

只想提供一段时间以来我一直在关注的更新,并认为我第一次也看到它。我不知道发生了什么,但是想让你知道我们确实在看它。

的Henrik

答案 2 :(得分:0)

(我没有足够的评论点,所以不得不这样做作为答案)

亨利克,我有同样的问题。如果我ftp到该框,我可以看到web.config具有正确的连接字符串,但它失败,因为尝试使用SQLServerDBConnectionString属性中的用户名(OoWUqr ****登录)。是否有可能让我知道它在寻找连接字符串的顺序以及在哪里?

如果它不能使用其他用户停止它,我是否可以通过移动服务允许他们使用正确的数据库?

由于

˚F