Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.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
Asp.net 如何在.NET Framework、.NET标准和.NET核心项目之间使用相同的配置?_Asp.net_.net_Asp.net Core_.net Standard - Fatal编程技术网

Asp.net 如何在.NET Framework、.NET标准和.NET核心项目之间使用相同的配置?

Asp.net 如何在.NET Framework、.NET标准和.NET核心项目之间使用相同的配置?,asp.net,.net,asp.net-core,.net-standard,Asp.net,.net,Asp.net Core,.net Standard,既然.NET标准中不存在ConfigurationManager,那么在.NET标准类库中检索正在执行的程序集的应用程序设置的最佳方法是什么,无论是web.config还是appSettings.{env}.json 我们有三个项目: ASP.NET核心Web应用程序(1.1) ASP.NET Web应用程序(4.6.1) .NET标准类库(1.4)->由两个项目引用 在.NET标准类库中,我们有一个URL,它需要根据部署到的环境进行更改 对于.NET核心应用程序来说,这很好,我们只需将UR

既然.NET标准中不存在
ConfigurationManager
,那么在.NET标准类库中检索正在执行的程序集的应用程序设置的最佳方法是什么,无论是
web.config
还是
appSettings.{env}.json

我们有三个项目:

  • ASP.NET核心Web应用程序(1.1)
  • ASP.NET Web应用程序(4.6.1)
  • .NET标准类库(1.4)->由两个项目引用
在.NET标准类库中,我们有一个URL,它需要根据部署到的环境进行更改

对于.NET核心应用程序来说,这很好,我们只需将URL添加到适当的
appSettings.{env}.json
文件中,将适当的值添加到DI容器中,然后使用
Microsoft.Extensions.Options
库检索配置

但是,我们还需要从.NET Framework 4.6.1应用程序中调用库,但是由于没有方法(至少我找不到方法)从
web.config
文件中检索值,因此我们没有在类库中设置URL的好方法

现在我们已经解决了这个问题,我们将URL变量设为静态变量,并在引用它的每个.NET Framework项目的
Application\u Start()
方法中设置它的值。我们通过添加到每个web.config的appSetting键来确定它是哪个环境,然后根据环境手动设置URL

在.NET标准类库中,是否有更可靠的方法来处理从.NET核心和.NET Framework应用程序检索appSettings值的问题?
最好是只在类库中设置值。

在调用库之前,您应该从配置中读取值,并通过参数将其传递到方法或构造函数中


一般来说,库代码不应该依赖于主机环境配置的副作用。这样做会使重用代码或有效测试变得非常困难。

您应该在调用库之前从配置中读取值,并通过参数将其传递到方法或构造函数中


一般来说,库代码不应该依赖于主机环境配置的副作用。这样做会使重用代码或有效测试变得非常困难。

我们已经这样做了-在
Global.asax.cs
中,我们根据使用它的每个.NET Framework项目中的配置调用
SetClientUrl(string clientApiUrl)
方法。我希望有一种更具伸缩性的方式。我们的库是基于Swagger API生成的,需要不同的IP地址,这取决于它部署到的服务器,所以我们没有选择。如果所有的项目都是.NET核心,或者所有的项目都是.NET框架,这是完全可能的,所以我认为在.NET标准中会有一些方法来实现这一点。听起来你做的是对的,尽管我会考虑是否有一种方法来强制使用。例如,通过构造函数参数。没有细节很难说。(顺便说一句,这不是我的反对票,我认为这是一个好问题。)我想不是你;通常,那些投票反对的人也不会花时间回答问题:)好吧-那么在.NET标准项目中,目前似乎不可能同时从
web.config
appSettings.json
中检索appSettings。感谢您的回复。我们已经这样做了-在
Global.asax.cs
中,我们根据使用它的每个.NET Framework项目中的配置调用
SetClientUrl(string clientApiUrl)
方法。我希望有一种更具伸缩性的方式。我们的库是基于Swagger API生成的,需要不同的IP地址,这取决于它部署到的服务器,所以我们没有选择。如果所有的项目都是.NET核心,或者所有的项目都是.NET框架,这是完全可能的,所以我认为在.NET标准中会有一些方法来实现这一点。听起来你做的是对的,尽管我会考虑是否有一种方法来强制使用。例如,通过构造函数参数。没有细节很难说。(顺便说一句,这不是我的反对票,我认为这是一个好问题。)我想不是你;通常,那些投票反对的人也不会花时间回答问题:)好吧-那么在.NET标准项目中,目前似乎不可能同时从
web.config
appSettings.json
中检索appSettings。感谢您的回复。感谢您对完全合法问题的随机否决票?感谢您对完全合法问题的随机否决票?