在ASP.Net核心中,通过提供多个appsettings..json文件,我可以为不同的环境设置不同的应用程序。但是,如何为不同的环境拥有不同的web.config文件呢?
发布于 2017-05-23 10:15:05
我也有同样的问题。最后,在网上搜索之后,我得出结论,web.config被认为是过时的ASP.NET核心(中间件方法)。实际上,您想要使用WEB.CONFIG (对于IIS)所做的事情应该用ASP.NET Core app.config或定制的中间件来完成(所以,新的理念如此)。
在我的例子中,我必须将以下部分放入我的web.config (仅针对我的生产环境,其中包含SSL):
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
</customHeaders>
</httpProtocol>由于WEB.CONFIG已经过时(当然,您仍然可以使用它),所以ASP.NET核心。您必须使用app.config或中间件方法(两者都可以是互补的)。这里是我用中间件代码替换我的web.config的示例。
在(app.UseMyCustomMiddleware) (这个文件是您的项目根目录)中,您必须注册您的自定义中间件--只需添加1行Startup.cs,如下所示:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
if (env.IsDevelopment())
{
...
}
else
{
...
app.UseMyCustomMiddleware();
}
...
}MyCustomMiddleware类的实现应该是这样的(为了清楚起见,我将两个类放在同一个文件中):
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);
}
}
}希望我的解释和样本能对你有所帮助。
https://stackoverflow.com/questions/42729701
复制相似问题