- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试找出修改 kestrel 监听的 URL 的正确方法从 Startup 类构造函数。
更新:除了下面的答案之外,我开始了解到 Startup 类并不按照我想象的方式用于配置 Kestrel。我原以为 Startup 会创建一个应用程序范围的配置对象,该对象将通过约定进行定位,但事实并非如此。正如@Tseng 指出的那样,应用程序和托管的配置是不同的问题。链接的答案和接受的答案提供了工作示例。
我在 Vagrant 中启动了一个全新的 Ubuntu 14 盒子,并根据 Microsoft 的当前说明安装了 ASP.NET Core 1.1:https://www.microsoft.com/net/core#linuxubuntu
我跑了:
这监听 http://localhost:5000默认情况下。在 Program.cs 中,我可以调用 app.UseUrls("http://*:5001) ,这可以更改 URL 和端口。
我真正想要的是通过在 Startup 类中添加新的 JSON 设置文件来按惯例更改 URL,因此我按照示例并使用此文件创建了 Hosting.JSON 文件(注意:我尝试过“server.urls”) "和 "urls"作为键)。
{
urls: "http://*:5001"
}
在 Startup.cs 中,在添加 appsettings.json 文件的默认行下方,我添加了 .AddJsonFile("hosting.json", 可选: false); (可选: false 以确保它正在拾取文件)
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddJsonFile("hosting.json", optional: false);
if (env.IsDevelopment())
{
// For more details on using the user secret store see https://go.microsoft.com/fwlink/?LinkID=532709
builder.AddUserSecrets();
}
builder.AddEnvironmentVariables();
Configuration = builder.Build();
}
我已验证该设置在配置构建后存在,但在 Program.cs 中构建主机时未拾取或使用该设置
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
并且应用程序仍然开始监听 localhost:5000。我(可能不正确)的理解是,通过使用正确的 key 正确命名设置,WebHostBuidler 应该选择它并使用它。
我见过其他示例,这些示例基本上摆脱了启动类并在 Program.cs 中创建配置,然后可以将其传递到对 UseConfiguration 的调用中,但我的理解是,使用启动类应该按照惯例执行此操作。
本质上我想将启动和程序分开,将hosting.JSON文件添加到带有URL的配置中,并在不需要的情况下将其拾取和使用调用UseUrls、UseConfiguration等。
我是否错过了一些明显的事情,或者试图做一些实际上不正确的事情?
根据我的评论解释为什么这不是重复的:
该帖子特别指出“launcherSettings 适用于 Visual Studio F5”。我在 Linux 机器上使用命令行。与VS无关。
该文章中提供的解决方案将配置构建移至 main 方法中。我特别指出,我想在 Startup 类中构建我的配置,就像默认的“dotnet new -t web”项目一样。
我不认为这是重复的,并且仍在审查 ASP.NET Core 源代码以查看这是否可行。
关于正确的 key :
namespace Microsoft.AspNetCore.Hosting
{
public static class WebHostDefaults
{
public static readonly string ApplicationKey = "applicationName";
public static readonly string StartupAssemblyKey = "startupAssembly";
public static readonly string DetailedErrorsKey = "detailedErrors";
public static readonly string EnvironmentKey = "environment";
public static readonly string WebRootKey = "webroot";
public static readonly string CaptureStartupErrorsKey = "captureStartupErrors";
public static readonly string ServerUrlsKey = "urls";
public static readonly string ContentRootKey = "contentRoot";
}
}
public class WebHost : IWebHost
{
private static readonly string DeprecatedServerUrlsKey = "server.urls";
最佳答案
在您的hosting.json 文件中,您应该使用server.urls 而不是url。并且hosting.json文件需要添加到program.cs中(在main方法中),而不是在启动时添加。
这是我的 Hosting.json 文件。
{
"server.urls": "http://localhost:5010;http://localhost:5012"
}
这是Main方法。
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddCommandLine(args)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddJsonFile("hosting.json", optional: true)
.Build();
var host = new WebHostBuilder()
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
这是屏幕截图。
关于asp.net-core - 如何在启动类中配置 Kestrel url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514991/
我曾尝试在 net.core 文档(问题等)上搜索信息但没有结果。 代码更简单: [HttpGet()] [Route("dob")] public string dobTes
对于部署在单个 AWS EC2 主机上的 .NET Core 2.2 应用程序,我比较了 IIS 托管与普通 Kestrel 托管。 对于 IIS 配置,我遵循 MS documentation .
我使用.net core 2.1并将其发布到IIS 8.5。我很难理解 .NET 核心托管的概念。 program.cs 是 public class Program { public sta
我有一个新的 ASP.NET 5 项目并按如下方式设置 project.json; "frameworks": { "dnx451": { "dependencies
我正在努力完成以下任务:我有一个运行 gRPC 服务的 asp.net core 3.1。 在应用程序的生命周期中,我希望能够暂停/停止端点/服务器监听/接受请求,并在一段时间后恢复它。 只是为了澄清
我已使用示例默认值在 Visual Studio 2019 中创建了无状态服务(创建新项目 -> Service Fabric 应用程序 -> 命名项目和解决方案 -> 无状态 ASP.NET Cor
我已使用示例默认值在 Visual Studio 2019 中创建了无状态服务(创建新项目 -> Service Fabric 应用程序 -> 命名项目和解决方案 -> 无状态 ASP.NET Cor
我们正在尝试使用 VSCode 在 Mac 上编写 ASP.NET 应用程序。我们已经成功安装了 VSCode、DNX、Yeoman、Node.js 和 npm,以及 the ASP.NET guid
我确实遇到了红隼的一个奇怪问题。我无法上传超过红隼 MaxRequestBodySize 的多个文件。 当我试图阅读 this.Request.Form.Files.GetFiles() 时,预期的行
官方MS-documentation说如果我想在 linux 上托管一个 ASP.NET 核心应用程序,我应该在它前面放置一个 apache 或 nginx 反向代理。但是,我找不到任何我应该这样做的
通过 HTTP 和 Visual Studio 内部它工作正常。但是,当我尝试通过 HTTPS 访问端点时,我看到了这个错误,我不完全确定如何解决这个问题: info: Microsoft.AspNe
我已完成以下操作,但仍然无效。运行 dotnet myapp.dll 仍然显示它正在监听 http://localhost:5000 . 创建hosting.json 代码: { "server.
我正在尝试使用 kestrel 创建 Web 应用程序。本文中https://learn.microsoft.com/pl-pl/aspnet/core/fundamentals/servers/ke
我知道不建议将 Kestrel Web 服务器暴露给外界,但将 Kestrel 置于 IIS 之后所损失的性能并不是一件可以轻易忽略的事情。 (事实上 ,迁移到 .net core 可能会失去所有
我在带有 VS2017 (15.3.5) 的 Win 7 上使用 Asp.Net core 2.0.2。 我当前的 Kestrel 配置如下所示: return WebHost.CreateDefau
如何在 Linux/OSX 上以持久的方式运行 Kestrel 网络服务器?我能够按预期运行网络服务器: 红隼 但是,我还没有找到一种方法来让它持久化,即 k 红隼 & 进程开始然后立即停止。 最佳答
我正在学习如何在 ASP.NET Core 2 中工作,我遇到了一个相当烦人的问题。每当我运行我的应用程序时,Kestrel 服务器都会忽略我的端点配置,而是开始监听一个随机端口。不用说,这不是我所期
我们有一个 ASP.NET Core 2.x 应用程序,它实现了自定义中间件,充当另一个(基于 Java 的)服务器/应用程序前面的代理。在服务器请求完成之前,此应用程序/中间件的客户端经常中止/取消
我需要通知 systemd 我的服务已成功启动,启动后需要运行的任务要求服务器已经在监听目标 Unix域套接字。 我正在使用 IWebHost::Run 来启动服务器,这是一个阻塞调用。此外,我找不到
我有以下设置:在应用程序负载均衡器 (AWS) 后面的几个 linux 容器(基于 aspnetcore 2.0.5 构建)中运行的 web api 正在使用 HttpClient 向此 api 发出
我是一名优秀的程序员,十分优秀!