gpt4 book ai didi

c# - FluentNHibernate 无法从 web.config 中读取 connectionString

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:41 24 4
gpt4 key购买 nike

当我使用 FluentNHibernate 时,它​​无法从 web.config 中读取连接字符串。我正在使用 ASP.NET Core Web 应用程序 (.NET Framework)、Fluent NHibernate 2.0.3 和 NHibernate 4.0.0.4000。

有注释的方式可以很好地访问数据库,而没有注释的方式就不行。

        return Fluently.Configure()
//.Database(MySQLConfiguration.Standard.ConnectionString("Server=localhost;Port=3307; Uid=root; Pwd=usbw;Database=hellonhibernate"))
.Database(MySQLConfiguration.Standard.ConnectionString(c => c.FromConnectionStringWithKey("TRP123456")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<PersonMap>())
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SessionMap>())
.ExposeConfiguration(CreateSchema)
.BuildSessionFactory();

web.config 是

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
<connectionStrings>
<add name="TRP123456" connectionString="server=localhost;port=3307;uid=root;password=admin;database=hellonhibernate;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
</configuration>

这是我得到的错误。请大家帮忙看看是什么问题。谢谢。

enter image description here

项目结构如下

enter image description here

最佳答案

首先检查这个问题我认为它可能会解决你的问题Access WebConfig in DotNet Core

另一种解决方案是改用 appsettings.json 文件。

您可以通过向您的项目添加一个 json 文件来实现。与 project.json 文件相同的文件夹。

在您的 startup.cs 中,您只需将您的文件映射到您的应用配置,如下所示:

public static IConfigurationRoot Configuration = null;
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) // in my case the file name is appsettings.json
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();

Configuration = builder.Build(); // returns IConfigurationRoot that can be used to access your settings later
}

现在我不确定我在那里创建的静态变量,它可能不是解决它的最佳方法。但它给了我我需要的东西。

然后您可以使用它来获取您的连接字符串:

Startup.Configuration["AppSettings:ConnectionString"]

假设您的 appsettings.json 文件中有一个 ConnectionString 键。

{  
"AppSettings":
{
"ConnectionString": "" //type your connection string in here
}
}

更好的是添加一个 AppSettings 类,如下所示:

 public class AppSettings
{
public string ConnectionString { get; set; }
}

现在您需要将其映射为服务(将其添加到您的中间件)。

public void ConfigureServices(IServiceCollection services)
{
//other services
services.Configure<AppSettings> Configuration.GetSection("AppSettings"));
//other services
}

所以你可以将它注入(inject)你的 Controller :

 public class HomeController : Controller
{
public _appsettings;
public HomeController(IOptions<AppSettings> appSettings)
{
_appsettings = appSettings;
}
}

最后,您现在可以通过在 Controller 中调用 _appsettings.ConnectionString 来获取连接字符串。

关于c# - FluentNHibernate 无法从 web.config 中读取 connectionString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com