首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.Net核心不同环境下的web.config

ASP.Net核心不同环境下的web.config
EN

Stack Overflow用户
提问于 2017-03-11 00:00:45
回答 1查看 1.4K关注 0票数 5

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

EN

回答 1

Stack Overflow用户

发布于 2017-05-23 10:15:05

我也有同样的问题。最后,在网上搜索之后,我得出结论,web.config被认为是过时的ASP.NET核心(中间件方法)。实际上,您想要使用WEB.CONFIG (对于IIS)所做的事情应该用ASP.NET Core app.config或定制的中间件来完成(所以,新的理念如此)。

在我的例子中,我必须将以下部分放入我的web.config (仅针对我的生产环境,其中包含SSL):

代码语言:javascript
运行
复制
<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,如下所示:

代码语言:javascript
运行
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{    
    ...
    if (env.IsDevelopment())
    {
      ...
    }
    else
    {
      ...            
      app.UseMyCustomMiddleware();
    }
    ...
}

MyCustomMiddleware类的实现应该是这样的(为了清楚起见,我将两个类放在同一个文件中):

代码语言:javascript
运行
复制
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);
        }
    }
}

希望我的解释和样本能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42729701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档