在我的WAP项目中,我引用了另一个C#项目(非Web).在那个C#项目中,我有一个app.config,我将其重命名为[projectName] .config
然后我尝试从我的[项目] .config中获取一个来自我的C#项目中的一些代码的密钥,它找不到它:
return ConfigurationManager.AppSettings["somekey"]
Run Code Online (Sandbox Code Playgroud)
所以我想知道为什么它无法读取我的app.config.我认为ConfigurationManager能够从Web项目的web.config和我的[projectName] .config(app.config)文件中读取密钥,该文件也在我引用的项目中?
试着把它放在你的web.config中:
<appSettings file="externalSettings.config"/>
Run Code Online (Sandbox Code Playgroud)
externalSettings.config是您要使用的另一个配置文件.
对于非Web程序集,它会查找AssemblyName.dll,其中AssemblyName对应于程序集名称.例如:如果您的程序集名称是Com.MyProject.Library1.dll,那么它正在寻找的配置文件是Com.MyProject.Library1.dll.config.
更新:
我做了这方面的一些更多的研究,并且指出在这里,"ConfigurationManager中会从被加载的AppDomain时加载的应用程序的配置文件中读取".因此,对于您的Web应用程序,如果您ConfigurationManager从aspx代码中进行访问,它将从web.config文件中读取.
我认为最适合做你想要的解决方法是我已经提供的解决方法,即使用appSettings配置参数,这将允许你有一个aspx应用程序和类库的共享配置文件.
例如,在共享配置文件中,您需要以下内容:
<appSettings>
<add key="Key1" value="test"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我们说这个文件是c:\temp\shared.config.然后在你的web.config中,你可以像这样引用它:
<appSettings file="C:\\temp\\shared.config"></appSettings>
Run Code Online (Sandbox Code Playgroud)
您可以将同一行放在类库的app.config中.
现在你可以使用:
ConfigurationManager.AppSettings["Key1"]
Run Code Online (Sandbox Code Playgroud)
从您的aspx应用程序或您的类库中,您将获得价值.
因此,如果您确实需要在aspx和类库之间共享"通用"配置参数,那么这就是实现它的方法.
| 归档时间: |
|
| 查看次数: |
4514 次 |
| 最近记录: |