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

本文关键字:连接 字符串 移动 服务 -发 Azure | 更新日期: 2023-09-27 17:55:01

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

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

错误只发生在Azure端。当我在本地测试服务时,与远程数据库的连接正常工作

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

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

就像我总是做的那样,我将DataAccess Assembly的app.config中生成的连接字符串复制到web.config (Web Api项目)的connectionStrings -元素中。

<connectionStrings>    
    <add name="ApplicationEntities" connectionString="<the connection string>" providerName="System.Data.EntityClient" />
</connectionStrings>

在web部署设置中,我为"ApplicationEntities"选择了连接字符串。我测试了它有和没有选项"在运行时使用此连接字符串(更新目的地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上运行时得到相同的连接字符串。知道哪里出错了吗?

更新:

我只是去远程调试服务(见这里)。当我在文本编辑器中打开下载的发布配置文件时,我发现有一个属性SQLServerDBConnectionString -包含在部署时总是被强制的连接字符串-具有相同的用户名和密码,我不知道它存在。我试图重写这个连接字符串,但它没有帮助。该连接保持活动状态。

更新2/May 29 2014:

似乎在此期间这个错误已经被azure移动团队修复了。仍然使用数据库优先的方法运行相同的代码,现在可以正常工作了。非常感谢!

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

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

  1. 带有。net后端的azure移动服务必须只使用代码优先的方法。这将生成一个带有元数据(以res开头)的专用连接字符串
  2. 连接字符串的名称必须与您下载默认示例todo应用程序时相同,即Ms_TableConnectionString。

在azure网站中有一个选项可以选择自定义SQL提供者来帮助创建自定义连接字符串,然而,这个选项不适用于azure管理门户中的dot net后端移动服务。

注。作为回答,因为我没有足够的点来评论…

只是想给一个更新,我一直在看这个一段时间,并认为我第一次看到它了。我不知道发生了什么,但我想让你知道我们确实在研究它。

Henrik

(我没有足够的分数来评论,所以不得不这样做作为一个答案)

Henrik,我也有同样的问题。如果我ftp到这个盒子上,我可以看到网络。配置具有正确的连接字符串,但在试图使用SQLServerDBConnectionString属性(OoWUqr****Login)中的用户名时失败。你是否可以让我知道它是在什么顺序寻找连接字符串和在哪里?

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

感谢F