我有一个旧的.asmx网络服务被网络应用程序使用。 VS 2015生成代码并将一些设置插入到web.config中,如下所示:
<applicationSettings>
<Foo.Properties.Settings>
<setting name="Foo_WebReporting_ReportRenderer" serializeAs="String">
<value>http://localhost/WebReporting/ReportRenderer.asmx</value>
</setting>
</Foo.Properties.Settings>
<applicationSettings>
基本上,我想在默认开发配置中将其替换为指向本地IIS express实例,然后使用转换为发布版本生成正确的输出(完全如this post中所述):< / p>
<applicationSettings>
<Foo.Properties.Settings>
<setting name="Foo_WebReporting_ReportRenderer" serializeAs="String">
<value>http://localhost:31571/ReportRenderer.asmx</value>
</setting>
</Foo.Properties.Settings>
<applicationSettings>
但是,此更改实际上并未在运行时更改设置。实际上,实际使用的设置是从WebApp.Properties.Settings属性的DefaultSettingValueAttribute获得的:
namespace Foo.Properties {
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
...
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.WebServiceUrl)]
[global::System.Configuration.DefaultSettingValueAttribute("http://localhost/WebReporting/ReportRenderer.asmx")]
public string Foo_WebReporting_ReportRenderer {
get {
return ((string)(this["Foo_WebReporting_ReportRenderer"]));
}
}
}
}
更改web.config对此结果没有影响,只有通过注释掉DefaultSettingValueAttribute才会返回null。
我仍然在这个网络应用程序中有一些旧式的“appSettings”,那么这与新的设置格式有冲突吗?我不确定还有什么可以继续。
编辑:尝试在更改之前删除元素,如下所示,无效:
<Foo.Properties.Settings>
<remove name="Foo_WebReporting_ReportRenderer" />
<setting name="Foo_WebReporting_ReportRenderer" serializeAs="String">
<value>http://localhost:31571/ReportRenderer.asmx</value>
</setting>
</Foo.Properties.Settings>