【发布时间】:2012-11-02 02:51:39
【问题描述】:
我有 web.config 文件,它会覆盖设置文件中的项目,如下所示:
<applicationSettings>
<MvcApplication.Properties.Settings>
<setting name="FacebookUrlAuth" serializeAs="String">
<value>http://URL1.com</value>
</setting>
<setting name="GoogleUrlAuth" serializeAs="String">
<value>http://URL2.com</value>
</setting>
</MvcApplication.Properties.Settings>
</applicationSettings>
我有 web.release.config 可以转换这些设置:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<applicationSettings>
<MvcApplication.Properties.Settings>
<setting name="FacebookUrlAuth" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace">
<value>http://AlternativeUrl1.com</value>
</setting>
<setting name="GoogleUrlAuth" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace">
<value>http://AlternativeUrl2.com</value>
</setting>
</MvcApplication.Properties.Settings>
</applicationSettings>
</configuration>
当我在发布配置中发布解决方案时,它可以正常工作(我的意思是只有 url 与 web.config 不同)
但是当 Appharbor 发布应用程序时,我使用的页面出现运行时错误@Settings.Default.FacebookUrlAuth
包含以下详细信息:
无法识别的元素“设置”。 (D:\websites\45\31968\17022\0x0001_PublishedWebsites\MVC.Web\web.config 第 73 行)
当我评论所有转换规则时,AppHarbor 会从我的默认 web.config 中获取这些属性,并且一切正常。 这是 AppHarbor 方面的问题吗?
【问题讨论】:
-
friism:你说的完全正确!出于某种原因,Appharbor 以错误的方式转换了我的配置。请出来接受+1
-
我已经找到问题所在了。正如friism所说,然后删除了他的解决方案:“你不能有多个设置元素。错误可能与转换无关。”他提供了解释的链接:blogs.msdn.com/b/tess/archive/2010/02/16/… 我已经阅读了 AppHarbor 托管的确切 web.config 并发现在转换后设置是一排。所以,我认为这是一个 AppHarbor 错误。
标签: settings appharbor web-config-transform