覆盖<applicationsettings>默认值

时间:2016-04-19 15:00:13

标签: asp.net iis web-config iis-express application-settings

我有一个旧的.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>

0 个答案:

没有答案