标签: kestrel-http-server

dotnet 核心设置 Cache-Control 无效

我已将 dotnet core 中间件配置为输出 Cache-Control 标头。我希望缓存所有静态内容,但最特别的是几个 .png 文件。缓存头没有被输出?我正在使用 dotnet core 1.1.1。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();
    app.UseStaticFiles(new StaticFileOptions
        {
            OnPrepareResponse = _ =>
            {
                var headers = _.Context.Request.GetTypedHeaders();
                headers.CacheControl = new CacheControlHeaderValue
                {
                    MaxAge = TimeSpan.FromHours(12)
                };
            }
        });

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseBrowserLink();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    app.UseIdentity();

    // Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715
    app.UseMvc(routes =>
    {
        routes.MapRoute(
            "default",
            "{controller=Site}/{action=Site}/{id?}");
    });
} …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-core-mvc kestrel-http-server asp.net-core

4
推荐指数
1
解决办法
8813
查看次数

WebApi 在调试时给出 404;发表时有效

我有一个用 .NET Core 2.2.6 编写的控制台应用程序,它使用 Kestrel 来托管一个简单的 WebApi。

public class SettingsController : Controller
{
    // 
    // GET: /settings/

    public string Index()
    {
        return $"Hello world! controller";
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我发布代码并运行可执行文件,我可以访问http://127.0.0.1:310/settings并看到预期的“Hello world!控制器”。但是,如果我从 Visual Studio 2019 内部调试(甚至在发布模式下打开),相同的 URL 会引发 404 异常。

发布个人资料

其他一些可能有助于查明问题的代码:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureKestrel((context, options) =>
        {
            options.ListenAnyIP(310, listenOptions =>
            {
                listenOptions.Protocols = HttpProtocols.Http1;
            });
        })
        .UseStartup<Startup>();

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    { …
Run Code Online (Sandbox Code Playgroud)

c# .net-core kestrel-http-server asp.net-core asp.net-core-webapi

4
推荐指数
1
解决办法
1250
查看次数

为什么 dotnet 在 Linux 上产生多个进程?

dotnet app.dll在 Ubuntu 18.04.1 LTS 上运行了一个 asp.net core 3.0 应用程序。我看到我的应用程序有 13 个进程。为什么会发生?Asp .net core的13个进程

linux kestrel-http-server asp.net-core

4
推荐指数
1
解决办法
999
查看次数

是否有人使用 ubuntu 18.04 在 docker 中使用 gRPC 服务器在微服务中部署了 .NET Core

我有两个带有普通 Web API 和 gRPC 服务的 .net 核心微服务(PatientService 和 AppointmentService)。我使用 gRPC 进行服务间通信,而不是使用 HTTP 调用。

预约服务依赖于患者服务的数据,这意味着当我点击预约服务的端点以获取预约时,我需要来自患者服务的患者信息,因此我使用 gRPC 进行此调用。

现在我的应用程序运行良好,我能够在两者之间进行通信,而无需在本地环境中使用 kestrel 做任何额外的事情。但是当我在 Docker 中运行相同的应用程序时,该应用程序没有运行,我无法访问 HTTP1 和 HTTp2 端口。我正在运行 Linux 容器。

我的问题是如何在 .net 核心应用程序中运行 HTTP1 和 HTTP2?如何使用grpc在.net微服务中进行服务间通信?

如何使用 Linux 容器(Ubuntu 18.04)在 docker 中运行 .net core web API + gRPC 服务?如何在没有 TLS 的情况下运行 gRPC?

请帮助我已经尝试了一切,但我被卡住了。我有这个重要的版本要发布。

Docker 文件。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
RUN …
Run Code Online (Sandbox Code Playgroud)

docker .net-core grpc kestrel-http-server asp.net-core

4
推荐指数
1
解决办法
2479
查看次数

.NET Core 6.0 - 获取Kestrel的动态绑定端口(端口0)

语境

.NET 6 中的“托管”机制已发生变化。以前IWebHostIWebHost.ServerFeatures可用于获取IServerAddressFeature类似内容的属性(来自此 SO 答案):

IWebHost host = new WebHostBuilder()
            .UseStartup<Startup>()
            .UseUrls("http://*:0") // This enables binding to random port
            .Build();
host.Start();
foreach(var address in host.ServerFeatures.Get<IServerAddressesFeature>().Addresses) {
  var uri = new Uri(address);
  var port = uri.Port;
  Console.WriteLine($"Bound to port: {port}");
}
Run Code Online (Sandbox Code Playgroud)

问题:如何使用 IHost 获取 .NET 6 中的端口?

现在在 .NET 6 中我有一个IHost. 如何获取端口(与 一致???):

public class Program {
  public static void Main(string[] args) {
    IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
    hostBuilder.ConfigureWebHostDefaults(webHostBuilder …
Run Code Online (Sandbox Code Playgroud)

c# grpc kestrel-http-server

4
推荐指数
1
解决办法
2419
查看次数

Kestrel 是否支持 urls/hostnames,或者它只能侦听端口?

我正在尝试启动 ASP.NET 5 Web 应用程序,以便可以通过公共 Internet 地址访问它,例如“ http://hostname.dom ”。

我不希望通过“ http://www.hostname.dom ”、“ http://test.hostname.dom ”等访问它。我将 DNS 记录配置为通过“*”指向服务器的 IP 地址.hostname.dom”和“hostname.dom”名称。

所以我用参数启动 Kestrel:

server.urls=http://hostname.dom
Run Code Online (Sandbox Code Playgroud)

我希望它忽略任何不是“ http://hostname.dom ”的地址,但是每个“ http://justanything.hostname.dom ”都可以使用应用程序 ”地址甚至只是IP地址。因此,它正在侦听对 80 端口的所有请求,而不是对特定主机名的请求。例如,在配置 IIS 站点绑定时,您可以指定像“hostname.dom”这样的绑定,它会忽略任何其他可能的前缀,直到您明确指定它们。

Kestrel 是否支持 urls/hostnames,或者它只能侦听端口?

dns virtualhost kestrel-http-server

3
推荐指数
1
解决办法
2190
查看次数

使用Visual Studio Code + ASP.NET 5 + Mono + Kestrel + OS X调试Web项目

我是OS X的新手(使用我的新mac 4天了),我正在设置一个环境,我可以使用Visual Studio Code中内置的调试器在本地调试我的Asp.Net 5 Web项目,特别是获取附加到单声道时断点工作.

我按照这些说明安装了asp.net 5和visual studio代码.(http://docs.asp.net/en/latest/getting-started/installing-on-mac.html)

然后我安装了yeoman,并构建了一个aspnet项目.

我跑的命令dnu restore,dnu builddnx web.

该项目在Kestrel本地运行localhost:5000就好了.我也可以通过VS Code调试器将它附加到mono.

当我尝试在C#代码中设置断点时出现问题.调试器不会命中它们.

在做了一些研究后,我发现我需要将Startup.cs文件指定为mono作为要调试的文件.(https://code.visualstudio.com/Docs/editor/debugging)

但运行后mcs -debug Startup.cs,我得到这些错误:

Startup.cs(5,17): error CS0234: The type or namespace name `AspNet'     does not exist in the namespace `Microsoft'. Are you missing an assembly  reference?
Startup.cs(6,17): error CS0234: The type or namespace name `AspNet' does not exist in the namespace `Microsoft'. Are you missing an assembly reference?
Startup.cs(7,17): error …
Run Code Online (Sandbox Code Playgroud)

macos mono visual-studio-code kestrel-http-server asp.net-core

3
推荐指数
1
解决办法
1425
查看次数

ASP.NET 5 Kestrel在LAN内连接

我想连接到我的Kestrel服务器,其中托管的ASP.NET 5应用程序来自同一网络中的另一台PC.可能吗?我可以从cmd ping我的电脑,但当我尝试从网络浏览器连接时,我得到'连接超时'(我输入:"http:// {my_kestrel_ip}:5000 /").

c# asp.net-mvc kestrel-http-server

3
推荐指数
2
解决办法
3417
查看次数

ASP.NET 5 MVC 6中的web.config

我有一个WCF .dll从web.config文件加载配置.
我在asp.net 5应用程序中使用该dll,当我尝试从dll调用函数时,我遇到异常:

找不到在ServiceModel客户端配置部分引用合同'WebService.MyWebService'的默认端点元素.这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素.

dll的配置存在于web.config中.
这曾经在asp.net beta 6中工作,但现在我升级到rc1它不起作用.

我怎样才能做到这一点?

c# wcf asp.net-core-mvc kestrel-http-server asp.net-core

3
推荐指数
1
解决办法
1317
查看次数

它是否需要在我的https apache代理服务器后面的Kestrel中使用https?

我不太清楚Kestrel服务器是否需要加密为本地主机服务器的想法.

我使用Apache和HTTPS作为Kestrel服务器的代理服务器.是否还需要在Kestrel中运行https?理论上,通过Apache代理服务器(启用HTTPS)的内容应该加密,对吗?

如果您有任何想法,请详细说明.

apache kestrel-http-server asp.net-core

3
推荐指数
1
解决办法
655
查看次数