3

我一直在尝试了解如何在 .net 中正确进行配置,并且遇到了一些我觉得有点奇怪的事情,那就是配置设置通过 Settings 类编译到程序集中。删除 app.config 并运行应用程序不会像我预期的那样导致配置错误,而是现在我无法替换配置值。

在我的应用程序中,我有一个 web 服务 url 的配置设置,我需要能够以编程方式获取和设置。我是否应该在我的应用程序的配置中创建自定义部分,我将通过 ConfigurationManager.GetSection(..) 来触发读取配置文件,或者是否有其他方法可以解决这个问题,因为我绝对不想要 web 服务 url用于将 ws 代理生成为可能泄漏到生产环境中的 url。

请帮忙。

4

7 回答 7

1

看看用户模式 ​​.NET 设置存储在哪里?

.NET 设置不在程序集中

于 2009-02-05T13:26:20.870 回答
1

尝试将应用程序配置文件而不是设置文件添加到您的项目中。应用程序配置文件不会编译到程序集中。

于 2009-02-05T12:59:12.297 回答
0

如果你点击属性上的加号,然后点击设置,你会发现一个名为 settings.designer.cs 的文件

此文件包含您在定义应用程序设置时创建的默认值,这就是您的应用程序在没有配置文件的情况下工作的原因。

但是,您始终可以覆盖此值。

对此进行测试的唯一方法是创建一个可供公众安全使用的默认值,并在测试期间对其进行更改。

于 2009-02-05T12:38:39.500 回答
0

当您添加对 webservice 的引用时,您可以设置属性以使 webservice url 动态(即从配置文件中读取)。

单击“Web 参考”。单击您的网络服务并将属性“URL 行为”从“静态”设置为“动态”。

进行更改后,将 Web 服务指向正确的 URL 所需要做的就是在应用程序运行之前更改配置文件。

于 2009-02-05T12:40:08.593 回答
0

据我记得(我有待纠正),.Net 创建了一个配置文件,该文件存储在您的 Windows 应用程序数据文件夹中,如果您正在部署应用程序,则尤其如此。

在应用数据(C:\Documents and settings\yourusername\Local Setting\Application Data\your app name)中搜索,看看是否可以在其中找到应用配置。如果可以,您应该可以在那里进行更改。

另外我不确定您正在创建什么类型的 Web 服务,但您不应该使用 web.config(我使用的)来存储设置吗?

于 2009-02-05T13:17:16.473 回答
0

据我所知,webservice 引用逻辑指出,如果 app.config(或 web.config)中有某个键,它将选择...如果没有...它将使用用于创建网络服务参考。在框架 1.1 中,可能是 2.0。

框架 3.0 中的 Settings.settings 文件...至少用作默认值。如果您没有在 web.config 中提供覆盖 Settings.settings 中的键的键,它将使用默认值......这就是您看不到配置错误的原因。对于 Web 服务引用,该文件中存储了您为创建引用而提供的值。

正如我所看到的...... Settings.settings 允许您以编程方式更新密钥,以保存首选项以及一些持久化的方式。

更多信息:

于 2009-02-05T13:18:50.790 回答
0

我想我明白你在说什么,乔乔。假设您从 www.productionurl.com 添加一个 web 服务,生成的代理类将生产 url 保留在源代码中。在运行时,如果在配置文件中找不到 url 的值(假设您已将服务设置为动态),它将使用此默认值。

如果您不喜欢这种行为,您有 2 个选择:

  • 更改 Reference.cs 文件(每次刷新服务代理时都必须继续这样做)
  • 为代理创建部分类并覆盖 URL 设置

或者您可以检查 Web 服务是否有开发站点。如果是,请从该站点而不是生产站点创建 Web 引用。

于 2009-02-05T13:19:45.080 回答