小编sha*_*zak的帖子

如何通过 netcore3.1 中的环境变量更改 Kestrel (AspNetCore) 侦听端口

我有 aspnetcore3.1 项目,我想为 Kestrel 设置自定义端口(默认 5000 除外)。我可以Program.cs通过添加来做到这一点

Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.ConfigureKestrel(options =>
    {
        options.ListenLocalhost(80);
    });
    webBuilder.UseStartup<Startup>();
})
Run Code Online (Sandbox Code Playgroud)

但这不能应用于我的情况,所以想知道,这如何通过环境变量来完成?

asp.net-mvc kestrel kestrel-http-server asp.net-core asp.net-core-3.1

5
推荐指数
1
解决办法
8124
查看次数

如何在使用 AddNewtonsoftJson 时通过 DI(服务集合)在 asp netcore 3.1 mvc 中检索 json 序列化器设置

我有一个使用 .netcore 3.1 的 ASP MVC 项目,我在其中覆盖序列化程序选项,如下所示

services
.AddControllers()
.AddNewtonsoftJson(options =>
{
    options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.RoundtripKind;
    options.SerializerSettings.NullValueHandling = NullValueHandling.Include;
    options.SerializerSettings.Converters.Add(new StringEnumConverter
    {
        NamingStrategy = new CamelCaseNamingStrategy(),
    });
})
Run Code Online (Sandbox Code Playgroud)

每当 MVC 为我序列化数据(请求/响应)时,这都能正常工作。但是现在,在其中一个中间件中,我需要手动序列化并返回一些数据作为响应,例如:

public async Task Invoke(HttpContext context)
{
    try
    {
        await _next(context);
    }
    catch (Exception exception)
    {
        ... // removed for simplicity
        await context.Response.WriteAsync(JsonConvert.SerializeObject(errorResponse, _jsonSerializerSettings));
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想重用现有的设置进行序列化。但是旧的 MvcJsonOptions 在 .netcore 3.1 中不再可用(如果我错了,请更正)。那么如何在不重复 json 序列化设置的情况下实现这一点呢?

c# asp.net-mvc json.net asp.net-core asp.net-core-3.1

5
推荐指数
1
解决办法
1713
查看次数