Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#从DLL读取web.config?_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

如何使用C#从DLL读取web.config?

如何使用C#从DLL读取web.config?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,假设我有一个名为dummyCode.sln的项目,现在当我编译该项目时,我会得到一个名为dummyCode.dll的dll 如何使用c#读取此DLL并获取web.config的信息 例如,如果我有这样一个web.config <configuration> <appSettings> <add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Enabled" va

假设我有一个名为dummyCode.sln的项目,现在当我编译该项目时,我会得到一个名为dummyCode.dll的dll

如何使用c#读取此DLL并获取web.config的信息

例如,如果我有这样一个web.config

<configuration>
 <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="employeeDB" value="Data Source=servername;Initial Catalog=employee;Persist Security Info=True;User ID=userid;Password=password;"/>
  </appSettings>
</configuration>


然后我想读取appsettings属性中的所有值,如何执行,是否可以执行?

此Dll将在某些Exe或网站中使用。您需要将这些配置项添加到该Exe或网站的配置文件中

app.Config(用于Exe)和web.Config(用于网站)

完成后,您可以使用以下方法阅读这些内容:

string theValue = ConfigurationManager.AppSettings["KeyName"];
(名称空间:
System.Configuration

另外,您还可以创建读取不同信息的方法:

示例:
Int

public static int GetIntConfiguration(string keyName)
{
    string value = ConfigurationManager.AppSettings[keyName] ?? "0";
    int theValue = 0;
    if (int.TryParse(value, out theValue))
    {
       return theValue;
    }
    return -1;
}
所以a-1告诉您配置中有一个无效值

类似地,您可以为其他类型创建方法

编辑:根据您的评论,
如果需要打开自定义配置:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration("dllPath.dll");

string value = config.AppSettings.Settings["key"].Value;
如果是web.config,可以将第一行更改为:

System.Configuration.Configuration configWeb = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("");

此Dll将在某些Exe或网站中使用。您需要将这些配置项添加到该Exe或网站的配置文件中

app.Config(用于Exe)和web.Config(用于网站)

完成后,您可以使用以下方法阅读这些内容:

string theValue = ConfigurationManager.AppSettings["KeyName"];
(名称空间:
System.Configuration

另外,您还可以创建读取不同信息的方法:

示例:
Int

public static int GetIntConfiguration(string keyName)
{
    string value = ConfigurationManager.AppSettings[keyName] ?? "0";
    int theValue = 0;
    if (int.TryParse(value, out theValue))
    {
       return theValue;
    }
    return -1;
}
所以a-1告诉您配置中有一个无效值

类似地,您可以为其他类型创建方法

编辑:根据您的评论,
如果需要打开自定义配置:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration("dllPath.dll");

string value = config.AppSettings.Settings["key"].Value;
如果是web.config,可以将第一行更改为:

System.Configuration.Configuration configWeb = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("");

正如已经在评论中提到的,类库项目的编译DLL没有自己的
.config
文件。如果您在该项目中创建了
app.config
web.config
,则它不会作为编译到DLL中的内容的一部分包含在内。DLL仅包含.NET代码

这样做没有任何逻辑意义——设置文件是针对每个应用程序的,而不是针对每个项目的。否则,它们可能相互冲突,和/或不可调整以适应包含库的应用程序


另外,这一点以前已经讨论过,而且(可能在其他地方)。关于如何实现目标,这里有一些建议,但也有很多类似的讨论,关于为什么这不是一个好主意。

正如前面的评论所提到的,类库项目的编译DLL没有自己的
.config
文件。如果您在该项目中创建了
app.config
web.config
,则它不会作为编译到DLL中的内容的一部分包含在内。DLL仅包含.NET代码

这样做没有任何逻辑意义——设置文件是针对每个应用程序的,而不是针对每个项目的。否则,它们可能相互冲突,和/或不可调整以适应包含库的应用程序


另外,这一点以前已经讨论过,而且(可能在其他地方)。关于如何实现目标,这里有一些建议,但也有很多类似的讨论,说明为什么这不是一个很好的主意。

阅读Dll是什么意思?将dll加载到应用程序域,然后读取元数据?dll是一个类库-类库没有自己的配置文件,它们使用引用它们的应用程序的配置文件。读取dll是什么意思?将dll加载到应用程序域,然后读取元数据?dll是一个类库-类库没有自己的配置文件,它们使用引用它们的应用程序的配置文件。好的,当我编译我的解决方案文件时,我将得到一个dll,它将包含web.config中的所有文件,对吗?我想读取dll并获取web.config信息。我不想知道如何从应用程序中读取web.config。我想知道如何读取dll和dll中的web.config文件的信息。请参阅本文以了解更多详细信息。@LijinDurairaj dll没有配置文件。请看我的答案。好的,当我编译我的解决方案文件时,我会得到一个dll,它会包含所有的文件沿woth web.config,对吗?我想读取dll并获取web.config信息。我不想知道如何从应用程序中读取web.config。我想知道如何读取dll和dll中的web.config文件的信息。请参阅本文以了解更多详细信息。@LijinDurairaj dll没有配置文件。看看我的答案。