快速解决:
AppHarbor 有自己的设置,这些设置在部署期间应用。其中一项设置包含 AppHarbor 连接字符串,另一项是别名,它需要与 web.config 中的连接字符串的键相匹配。
如果您更改 AppHarbor 中的“SQLSERVER_CONNECTION_STRING_ALIAS”以匹配您的连接字符串 Key,这将导致在部署期间应用 App Harbors SQL Server Connection,这可能与大多数人真正想要的一样多。在正常的 webconfig 转换之外维护 SQL 连接设置(和其他部署设置)对我来说感觉更好。
一些问题的更大描述:
至于我从一个下午的诊断和尝试中可以看出,发生了以下步骤,这可能有助于解释帮助诊断为什么事情没有按预期运行:
AppHarbor 运行构建并运行测试,(您可以从 App Harbor 站点下载此输出)
构建后(并且在您看不到的单独文件夹中),构建的输出通过 App Harbors 自己的转换进行。因为这是在构建之外,所以需要存在文件才能发生这种情况。Web.Release.Config 必须设置为内容的构建操作,否则此转换步骤将无法获取它
转换后应用了一组附加设置。连接字符串将被覆盖等,请参阅下面的博客文章了解其工作原理:
http://chandermani.blogspot.co.uk/2012/03/nerddinner-on-appharbor.html
总之,有很多相互作用和可能出错的事情。
第 3 步有可能覆盖您在第 2 步中尝试执行的转换,使其看起来好像转换不起作用。
Web.Release.Config 文件可能未设置为内容。
最后,因为这是在构建之后发生的 AppHarbors 轻微定制的转换,它似乎并不总是与 Visual Studio 中发生的情况一致。我遇到了一个问题,我在 web.config 中缺少一个阻止转换发生的设置。您可以使用一个测试工具来检查转换将如何发生在这里: https ://webconfigtransformationtester.apphb.com/
我终于得到了正确应用的设置,并且在我自己的站点中应用了转换,但花了很长时间。我希望这个答案能帮助 somonelse