C# XmlConfigurator.Configure(新文件信息(“somepath”))未配置配置文件

C# XmlConfigurator.Configure(新文件信息(“somepath”))未配置配置文件,c#,logging,web-config,log4net,C#,Logging,Web Config,Log4net,我想这个问题在互联网上已经被问了数百万次了,但遗憾的是,没有一个解决方案适合我 我正在我的.net项目us中编写一个web api服务和体系结构,这样我就有了不同的层,如数据访问层、服务层、javascript web客户端(显然设置为启动项目等) 我正在使用一个名为MyConfigFile.config的外部xml配置文件进行日志记录,我已经将该配置文件包含在javascript web客户端项目的根目录中,并且我还将该配置文件添加到我的根目录web.config文件的appsetting中,

我想这个问题在互联网上已经被问了数百万次了,但遗憾的是,没有一个解决方案适合我

我正在我的.net项目us中编写一个web api服务和体系结构,这样我就有了不同的层,如数据访问层、服务层、javascript web客户端(显然设置为启动项目等)

我正在使用一个名为MyConfigFile.config的外部xml配置文件进行日志记录,我已经将该配置文件包含在javascript web客户端项目的根目录中,并且我还将该配置文件添加到我的根目录web.config文件的appsetting中,如下所述

<appSettings>
      <add key="NSLog" value="~\MyConfigFile.config"/>
</appSettings> 
到AssemblyInfo.cs和MyConfigFile.config文件的构建操作是content,复制到输出目录是copy always

我想在服务层中存在的控制器类中记录错误和信息,我还在app.config文件中添加了整个xml配置文件的内容,app.config文件是服务层项目中的文件之一。但我并没有像上面提到的AssemlyInfo.cs到web客户端项目那样,在服务层中向AssemblyInfo.cs添加任何内容。 然后我使用以下方法在每个控制器类中配置外部配置文件

ICollection ic = XmlConfigurator.Configure(new FileIinfo("path to external config file"));
为了给FileInfo构造函数提供路径,我使用了一百万种方法,比如

ConfigurationManager.AppSettings["MyConfigFile"].ToString() 
因为我的web.config文件的appsettings中提到了这个文件

然后我用

 string path = Server.MapPath("~/MyConfilg.config");
string path = HostingEnvironment.ApplicationPhysicalPath + "MyConfigFile";
然后我用

 string path = Server.MapPath("~/MyConfilg.config");
string path = HostingEnvironment.ApplicationPhysicalPath + "MyConfigFile";
这些都不会抛出null,但ICollection接口的ic对象始终将count返回为零。当我在控制台应用程序中通过在控制台应用程序中包含我的配置文件来执行相同的操作,然后使用Configure方法为FileInfo构造函数参数使用外部配置文件的完整物理路径时,对象ic给我计数4


为什么ic在控制台应用程序中给我一些计数?为什么不在web服务的控制器类中。我应该如何给FileInfo的构造函数参数提供路径值,以便ic对象应该开始给我一些计数值。

什么意思,抛出空值?你是说NullReferenceException吗?在哪一行?是的,我是说对象引用设置为null或其他什么,但是null不是你应该读到的问题。对不起,我以为你说其中一个会抛出null。我使用了字符串path=ConfigurationManager.AppSetting[MyConfig].ToString,然后我喜欢path=HostingEnvironment.MapPathpath;如果string.IsNullOrEmptypath&&File.Existspath{ICollection ic=XMLConfigurator.Configurenew FileInfopath;}。。。。我的代码在if语句中,并在其中的那一行中,这意味着我的文件确实存在,路径不是null或空的,但为什么ic给我ICollection的计数为0。我自己修复了它。谢谢