gpt4 book ai didi

asp.net-core - ASP.Net Core 不同的 web.config 按环境

转载 作者:行者123 更新时间:2023-12-04 14:01:10 24 4
gpt4 key购买 nike

在 ASP.Net Core 中,我可以通过提供多个 appsettings. .json 文件为不同的环境设置不同的应用程序设置。但是如何为不同的环境使用不同的 web.config 文件?

最佳答案

我有同样的问题。
最后,在网上寻找之后,我得出结论认为 web.config 对于 ASP.NET Core(中间件方法)来说已经过时了。
事实上,你想用 WEB.CONFIG(用于 IIS)做什么应该用 ASP.NET Core 来完成 app.config 或通过自定义中间件(新哲学等)。

就我而言,我必须在我的 web.config(仅适用于具有 SSL 的 PRODUCTION 环境)中放入以下部分:

<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
</customHeaders>
</httpProtocol>

由于 WEB.CONFIG 对于 ASP.NET Core 已过时(当然您仍然可以使用它)。您必须使用 app.config 或中间件方法(两者都可以互补)。这是我用中间件代码替换我的 web.config 所做的示例。

在 Startup.cs(此文件是您的项目根目录)中,您必须注册您的自定义中间件 - 只需添加 1 行( app.UseMyCustomMiddleware ),如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
if (env.IsDevelopment())
{
...
}
else
{
...
app.UseMyCustomMiddleware();
}
...
}

的实现MyCustomMiddleware 类应该是这样的(为了清楚起见,我将 2 个类放在同一个文件中):
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;

namespace MyWeb // Change this name to match your project name if needed
{
public static class MyCustomMiddlewareExtensions
{
public static IApplicationBuilder UseMyCustomMiddleware(this IApplicationBuilder app)
{
return app.UseMiddleware<MyCustomMiddleware>();
}
}
public class MyCustomMiddleware
{
private readonly RequestDelegate _next;

public MyCustomMiddleware(RequestDelegate next)
{
this._next = next;
}

public async Task Invoke(HttpContext context)
{
// Put your code here (at my concern, i need the code below)
context.Response.Headers.Add("Strict-Transport-Security", "max-age=31536000; includeSubDomains; preload");

// Very important
await _next(context);
}
}
}

希望我的解释和我的样本可以帮助你。

关于asp.net-core - ASP.Net Core 不同的 web.config 按环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729701/

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