gpt4 book ai didi

c# - 在 dotnet core v2 中使用 hosting.json 和 appsettings.json 配置 Kestrel

转载 作者:太空宇宙 更新时间:2023-11-03 17:07:14 28 4
gpt4 key购买 nike

我需要在 Ubuntu 16.04 LTS 服务器上的 dotnet core 中设置一个项目,并连接一个数据库。我按照本教程进行操作,并设法在某个域名/IP 上将其上网。

我使用的教程: https://www.hanselman.com/blog/PublishingAnASPNETCoreWebsiteToACheapLinuxVMHost.aspx

此时,我的简单、干净的 mvc 项目正在运行。但是,我需要与数据库建立连接。我有一个在不同的服务器上运行(我有正确的凭据)。但我对托管 .json 文件有疑问。它似乎与常规的 appsettings.json 文件冲突。

托管.json

{
"server.urls": "http://localhost:5123"
}

Program.cs v1(在线工作但没有数据库连接)

var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build();

var host = new WebHostBuilder()
.UseKestrel()
.UseConfiguration(config)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.Build();

host.Run();

Program.cs v2(离线使用数据库,不在线)

 public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();

应用设置.json

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"correctdb": "Server=correctip;Database=correctdb;Uid=SA;Pwd=correctpass",
"providerName": "Sql.Data.SqlClient"
}
}

这是我的错误消息:error我的主要问题是,我觉得它与使用 hosting.json 的 dotnet core v2 中的 Kestrel 设置冲突,就像教程所说的那样。

每当我使用 Program.cs v2 时,它只会在有数据库连接的情况下离线运行。每当我使用 Program.cs v1 时,它都会在线运行,但没有连接。

是否有另一种不使用 hosting.json 来配置 Kestrel 的方法?非常感谢您的帮助。

编辑1

 var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddJsonFile("appsettings.json", optional: true)
.Build();

编辑2

   at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)
at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
at Microsoft.Extensions.Configuration.Json.JsonConfigurationFileParser.Parse(Stream input)
at Microsoft.Extensions.Configuration.Json.JsonConfigurationProvider.Load(Stream stream)
--- End of inner exception stack trace ---
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load(Boolean reload)
at Microsoft.Extensions.Configuration.FileConfigurationProvider.Load()
at Microsoft.Extensions.Configuration.ConfigurationRoot..ctor(IList`1 providers)
at Microsoft.Extensions.Configuration.ConfigurationBuilder.Build()
at webapp.Program.Main(String[] args) in /home/ubuntu/webapp/Program.cs:line 30

编辑3

 public Startup(IConfiguration configuration)
{
Configuration = configuration;
}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<WebappContext>(options => options.UseSqlServer(Configuration.GetConnectionString("correctdb")));
services.AddMvc();
}

编辑4

 public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true)
.AddCommandLine(args)
.Build();

return WebHost.CreateDefaultBuilder(args)
.UseConfiguration(config)
.UseStartup<Startup>()
.Build();
}

最佳答案

你确定你上传了 appsettings.json 吗?

此外,v1 不加载 appsettings.json 文件,CreateDefaultBuilder 所做的是加载标准内容,因此它会在存在时加载 appsettings.json。

关于c# - 在 dotnet core v2 中使用 hosting.json 和 appsettings.json 配置 Kestrel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677609/

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