我有一个单独的类库项目(.NET Framework 4.8),用于访问数据库。此类库是用Visual Basic(VB)编写的。
最近,由于一项新要求,我不得不在解决方案中添加一个Web API层以通过端点公开数据。
我在现有解决方案中创建了一个新的.NET Core 2.1 Web API项目。我在.NET Core中的appSettings.json中配置了应用程序设置,而不是在.NET Framework中的App.config中按照规范进行了配置。
现在下面的代码失败(我无法访问我的配置设置)。
Public connectionString As String = System.Configuration.ConfigurationManager.AppSettings("ConnectionString")
错误:system.typeinitializationexception
注意:此代码以前有效。无法访问配置设置。
替代尝试: 我试图创建.NET Framework Web API(v4.8)而不是.NET Core Web API,并且它可以正常工作。因此,请提供一个解决方案,以从.NET Core Web API项目访问用VB编写的.NET Framework类库(v4.8)的appSettings.json。
如何在同一解决方案中从.NET Framework类库项目访问属于.NET Core Web API项目的appSettings.json,]
我们知道,ASP.NET Core使用different configuration settings。为了达到上述要求,您可以尝试以下方法:
方法1:
修改您的类库方法以接受其他参数,然后您可以从Web.config或appsettings.json中读取ConnectionString
等,并将其作为参数,而您在相应的Apps中调用方法。方法2:
修改并扩展您的类库,使其可与ASP.NET Core配置设置一起使用,如下所示。Imports System.Configuration Imports Microsoft.Extensions.Configuration Public Class DbGeneric Private ReadOnly _configuration As IConfiguration Public Sub New(ByVal configuration As IConfiguration) _configuration = configuration End Sub Public Sub New() End Sub Public Function GetAll() As String Dim connectionString As String = ConfigurationManager.ConnectionStrings("DefaultConnection").ConnectionString Return connectionString End Function Public Function GetAllForCore() As String Dim connectionString As String = _configuration("ConnectionStrings:DefaultConnection").ToString() Return connectionString End Function End Class
在ASP.NET应用中
var dbGeneric = new MyClassLibraryVB.DbGeneric(); var con_str = dbGeneric.GetAll();
在ASP.NET Core应用中
public class ValuesController : ControllerBase { private readonly IConfiguration Configuration; public ValuesController(IConfiguration configuration) { Configuration = configuration; } public IActionResult GetAll() { var dbGeneric = new MyClassLibraryVB.DbGeneric(Configuration); var con_str = dbGeneric.GetAllForCore();
appsettings.json中的ConnectionStrings
"ConnectionStrings": { "DefaultConnection": "{conection_string_for_netcore}" }
测试结果