0

我有一个尝试部署到 Azure 云服务的新应用程序。使用 VisualStudio 2012、Entity Framework - Code First 和 SQL Server Management Studio 在本地开发。

我有一个 Azure 云服务项目、一个 Web 角色项目、一个服务层类 (C#) 库和一个数据对象类库。

这些都在我的本地机器上完美地协同工作。Web 调用服务,服务调用上下文,上下文返回(或修改)对象。耶!

然后我发布了网络应用程序。使用此语句添加了 web.release.config 转换...

<connectionStrings>
    <add name="DefaultConnection"
    connectionString="Server=tcp:xmeg1j7x57.database.windows.net,1433;Database=RS.Core.Objects.RSData;User ID=****@xmeg1h7x57;Password=**********;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>

没有喜悦。它似乎仍在尝试调用我的(localdb)。

所以我在本地运行它(已将 web.config 更改为具有 azure 生产字符串),并在断点处查看...

WebConfigurationManager.AppSettings["DefaultConnection"]

期待一个字符串。发现了一个数组。第二个值来自 web.config,但第一个值是自动生成的 (localdb) 引用。我如何摆脱这个参考?显然我遗漏了一些东西,但数小时的研究证明我的 Google-Fu 很弱。

4

2 回答 2

1

过去要检查的两件事对我造成了这个问题:

  1. 在创建 MembershipProvider 之前,我调用了一些 System.Security 方法(特别是 User.IsInRole())。出于某种原因,这试图检查 localdb 实例以获取用户信息。一旦 MembershipProvider 运行,我就没有这个问题。由于时间限制,我围绕这个错误进行了编码。
  2. 将连接字符串从“DefaultConnection”重命名为其他名称,可能是“AzureDbConnection”,并在适当的地方更改所有引用。

您可能还会发现在整个项目中搜索“DefaultConnection”并查看它是否被动态设置以及清除任何 app.configs 的连接字符串信息很有用。

于 2013-09-09T03:54:43.400 回答
0

尝试</clear>在“添加”之前添加一个?

<connectionStrings>
    </clear>
    <add name="DefaultConnection"
    connectionString="Server=tcp:xmeg1h7x57.database.windows.net,1433;Database=RS.Core.Objects.RoomScopeData;User ID=RSAdmin@xmeg1h7x57;Password=**********;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;"
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>
于 2013-09-09T02:52:07.743 回答