标签: configuration

.NET:缺少必需的配置设置时抛出哪个异常?

这是一个标准方案:

if(string.IsNullOrEmpty(Configuration.AppSettings["foobar"]))
   throw new SomeStandardException("Application not configured correctly, bozo.");
Run Code Online (Sandbox Code Playgroud)

问题是,我不完全确定应该是哪个例外SomeStandardException.

我仔细阅读了3.5框架,发现了两个可能的候选人:ConfigurationExceptionConfigurationErrorsException.

System.Configuration.ConfigurationException

发生配置系统错误时引发的异常.

备注

ConfigurationException如果应用程序试图读取或写入数据到配置文件,但不成功则抛出异常.可能的原因可能包括配置文件中格式错误的XML,文件权限问题以及值无效的配置属性.

注意:

ConfigurationException维护该对象是为了向后兼容.该ConfigurationErrorsException 对象替换配置系统.

这个例外实际上听起来非常适合我所需要的,但它已被标记为过时,所以,ixnay on atthay.

这让我们彻底迷惑ConfigurationErrorsException:

System.Configuration.ConfigurationErrorsException

当前值不是EnableSessionState值之一.

如您所见,其文档完全没用.(在本地和在线帮助中都是如此.)对课程本身的检查表明,对于我想要的东西来说,这是一种极端的过度杀伤力.

简而言之,我需要一个标准异常,当应用程序配置设置丢失或包含无效值时应抛出该异常.你认为框架有一个例外,它允许应用程序使用它.(它显然没有,但它被标记为已过时,并且被替换的东西范围较大.)

你们有什么解决方案,如果有的话,我们将不得不将其吸收并为此推出自己的例外情况?

编辑补遗

有些人问我是否可以提供默认值,然后继续.在某些情况下,是的,在这些情况下,不会抛出异常.但是,对于某些设置,这将不适用.例如:数据库服务器名称和凭据,身份验证服务器以及安装的第三方应用程序的路径.

还值得注意的是,我主要处理的应用程序是以批处理模式运行的控制台应用程序,我希望它抛出一个由main方法捕获的异常,并在没有正确配置的情况下正确记录.(这是我继承的遗留代码,目前只是假设一切都很好.)

.net configuration exception

116
推荐指数
6
解决办法
4万
查看次数

如何用Spring 3.0表达式语言参数化@Scheduled(fixedDelay)?

当使用Spring 3.0功能来注释计划任务时,我想fixedDelay从配置文件中设置as参数,而不是将其硬连接到我的任务类中,就像当前...

@Scheduled(fixedDelay = 5000)
public void readLog() {
        ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,使用Spring表达式语言(SpEL)的方法似乎@Value返回一个String对象,而该对象又无法按fixedDelay参数的要求自动装入长值.

java configuration spring annotations scheduling

116
推荐指数
4
解决办法
8万
查看次数

加载自定义配置文件

我知道我可以使用静态ConfigurationManager.OpenExe(exePath)方法打开与程序集相关的配置文件,但我只想打开与程序集无关的配置.只是一个标准的.NET配置文件.

c# configuration

115
推荐指数
3
解决办法
10万
查看次数

Eclipse:在log4j.xml中引用log4j.dtd

我一直在使用log4j已经有一段时间了,我通常在log4j.xml的顶部使用它(可能就像许多其他人一样,根据谷歌这是这样做方式):

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
Run Code Online (Sandbox Code Playgroud)

显然这是有效的,但Eclipse并没有为编写XML提供其上下文相关的帮助.此外,它总是显示一个警告,它没有找到log4j.dtd.现在我很好奇如何解决这个问题.

我尝试了一些事情,这些工作:

<!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)

从上面可以看出我们正在使用Maven.因此,我试过这个,但它失败了:

<!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
Run Code Online (Sandbox Code Playgroud)

Eclipse通常知道如何处理类路径变量,但为什么这不起作用?我知道引用在运行时不起作用,但也不是简单的log4j.dtd(如果我没有错),所以这不应该是一个问题.

任何人都可以对此有所了解吗?

xml eclipse configuration log4j

114
推荐指数
2
解决办法
8万
查看次数

如何为多个构建配置选择不同的app.config

我有一个包含MSTest集成测试的dll类型项目.在我的机器上测试通过,我希望在CI服务器上发生同样的事情(我使用TeamCity).但是测试失败了,因为我需要在app.config中调整一些设置.这就是为什么我想要一个单独的第二个app.config文件来保存CI服务器的设置.

所以我想拥有

/Sln
 /Proj
  app.config (I think this is required by VS)
  app.Release.config (This is a standalone independent config file)

因此,如果我在CI上的构建配置中选择Release配置,我想使用app.Release.config文件而不是app.config

问题
对于简单的.dll类型项目,这似乎并不简单.对于Web项目,我可以进行Web配置转换.我找到了一个黑客如何为dll类型的项目进行这些转换,但我不是黑客的忠实粉丝.

问题
根据.NET项目的构建配置(例如Debug,Release,...)调整app.config文件的标准方法是什么?

.net configuration continuous-integration release-management visual-studio

114
推荐指数
5
解决办法
11万
查看次数

OpenSSL和读取openssl.conf文件时出错

我正在运行Windows XP 32位

我刚刚从以下URL下载了Openssl并安装了它. http://www.slproweb.com/products/Win32OpenSSL.html

然后我尝试使用以下命令创建自签名证书

openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)

然后它开始给出以下错误

无法从/usr/local/ssl/openssl.cnf加载配置信息

然后谷歌搜索后我改变了上面的命令

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)

但现在我在命令提示符中收到以下错误

C:\ OpenSSL\bin\openssl.conf的第-1行错误
4220:错误:02001002:系统库:fopen:没有这样的文件或目录:.\ crypto\bio\bss_file.c:126:fopen('C:\OpenSSL\bin\openssl.conf','rb')4220:错误:2006D080:BIO例程:BIO_new_file:没有这样的文件:.\ crypto\bio\bss_file.c:129:
4220:错误:0E078072:配置文件例程:DEF_LOAD:没有这样的文件:.\ crypto\conf\conf_def.c:197:

请帮忙.提前致谢.

windows configuration openssl environment-variables

113
推荐指数
9
解决办法
30万
查看次数

如何在PyCharm中选择Python版本?

我有PyCharm 1.5.4并使用"Open Directory"选项打开IDE中文件夹的内容.

我选择了Python 3.2版(它显示在"外部库"节点下).

我如何选择另一个版本的Python(我已经在我的机器上安装),以便PyCharm使用该版本?

python configuration pycharm

113
推荐指数
5
解决办法
15万
查看次数

Redis - 连接到远程服务器

我刚刚使用我的Ubuntu 10.10服务器上http://redis.io/topics/quickstart上的快速入门指南中的说明成功安装了Redis .我正在以dameon运行服务(因此可以通过init.d运行)

该服务器是具有内部和外部IP的Rackspace Cluster的一部分.主机在端口6379上运行(Redis的标准)

我在iptables中添加了一行以允许来自端口6379的传入连接,如下所示:

 ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6379 
Run Code Online (Sandbox Code Playgroud)

在我在另一台服务器上的PHP代码中,我正在尝试连接到新的Redis服务器:

$this->load->helper("iredis");

$hostname = "IP ADDRESS HERE";

$redis = new iRedis(array('hostname' => $hostname, 'port' => 6379));
Run Code Online (Sandbox Code Playgroud)

一旦我这样做 - 我总是拒绝连接.在我的redis.conf文件中,我将本地绑定命令注释掉,因此它应该监听的不仅仅是本地主机IP.我可以连接到本地计算机上的数据库,而不是在另一台服务器上.我已经尝试过外部和内部IP而没有运气.

有关使此工作的任何建议?

ubuntu configuration redis

111
推荐指数
4
解决办法
15万
查看次数

如何在Core 2.0中的ConfigurationBuilder中设置SetBasePath

如何在Core 2.0中的ConfigurationBuilder中设置基本路径.

我用Google搜索,发现这个问题,这个来自微软的文档,以及2.0文档在线,但他们似乎使用的版本Microsoft.Extension.Configuration1.0.0-beta8.

我想读appsettings.json.在Core 2.0中有没有新的方法?

using System;
using System.IO;
using Microsoft.Extensions.Configuration;
namespace ConsoleApp2
{
    class Program
    {
        public static IConfigurationRoot Configuration { get; set; }

        static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory()) // <== compile failing here
                .AddJsonFile("appsettings.json");

            Configuration = builder.Build();

            Console.WriteLine(Configuration.GetConnectionString("con"));
            Console.WriteLine("Press a key...");
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

appsetting.json

{
  "ConnectionStrings": {
    "con": "connection string"
  }
}
Run Code Online (Sandbox Code Playgroud)

更新: 除了添加Microsoft.Extensions.Configuration.FileExtensions如下图所示的设置我还需要添加 …

c# configuration .net-core asp.net-core

111
推荐指数
3
解决办法
5万
查看次数

Java:可以在属性文件中换行吗?

是否可以在Java属性文件的下一行继续长字符串?

例如,不知何故

myStr=Hello
      World
Run Code Online (Sandbox Code Playgroud)

当我得到getProperty("myStr")它将返回"Hello World"?

java configuration properties

108
推荐指数
3
解决办法
5万
查看次数