【问题标题】:Sharing .Net Web Configuration File Issue共享 .Net Web 配置文件问题
【发布时间】:2013-06-30 07:26:10
【问题描述】:

我在当前项目中遇到了一些问题。我有一个包含 2 个独立项目的解决方案。第一个是我正在发布的项目,它有一个 web.config 文件。第二个是数据访问项目,它只包含.cs文件,并且有一个app.config文件,以及一个包含Settings.settings文件的Properties文件夹。

像这样:

Solution
    DataProject
        app.config
        Settings.settings
        Code.cs

    PublishProject
        Code Files
        Web.config

我的问题是,我希望能够在解决方案发布后编辑 app.config 文件设置,但是 app.config 文件被滚动到位于 PublishProject 的 bin 文件夹中的 DataProject.dll 中。因此,我无法访问 app.config 文件以在发布后对其进行编辑。

我尝试将 app.config 文件设置为链接文件,该文件仅指向另一个项目中的 Web.config 文件,但问题是设置文件未使用来自app.config 文件,除非您在 Visual Studio 中打开设置文件并允许它重新加载。设置文件中的值是在整个应用程序中使用的值。

目前唯一的解决方法是更改​​配置并重新发布项目。

【问题讨论】:

    标签: asp.net web-config app-config csproj settings.settings


    【解决方案1】:

    如果其他人遇到此问题,我可以使用以下解决方法:

    PublishProject 中创建一个xml 文件,并将app.config 中的数据转换为单独的xml 标签,如下所示:

    <configuration>    
        <setting name="debug" serializeAs="String">
                  <value>False</value>
        </setting>
    </configuration>
    

    变成

    <Properties>
        <debug>True</debug>
    </Properties>
    

    执行此操作后,您可以在代码中调用以下内容,而不是使用 Settings.settings 文件中的值。

    XmlDocument doc = new XmlDocument();
    String appPath = HttpContext.Current.Server.MapPath("~").ToString() + @"/App_Data/Properties.xml";
    doc.Load(appPath);
    debug = Convert.ToBoolean(doc.SelectSingleNode("Properties/debug").InnerText.ToString());
    

    注意:我将它放在完成项目的 App_Data 文件夹中,因为默认情况下无法通过浏览器访问该文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2011-09-13
      • 1970-01-01
      • 2019-04-17
      • 2019-11-06
      • 2017-12-16
      相关资源
      最近更新 更多