2017-03-11 77 views
2

在ASP.Net Core中,我可以通過提供多個appsettings爲不同的環境設置不同的應用程序設置。 <環境名稱> .json文件。但是我怎麼能爲不同的環境使用不同的web.config文件?ASP.Net按環境分類的不同web.config

+0

ASP.Net Core不使用web.config文件。你想改變什麼配置? – DavidG

+0

謝謝@DavidG。我需要web.config本身不是用於ASP.Net Core,而是用於部署到的IIS。我的環境需要稍微不同的IIS設置。 – Andrew

+0

將web.config文件部署到生產環境後,您可以將其從發佈中排除,以便dev副本不會覆蓋它。 –

回答

0

我有同樣的問題。 最後,在網上尋找後,我認爲web.config被認爲已經過時了ASP.NET Core(中間件方法)。 實際上,您想要用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或Middleware方法(兩者都可以互補)。這裏是我用中間件代碼替換我的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); 
     } 
    } 
} 

希望我的解釋,我的樣本可以幫助你。