2016-09-06 50 views
3

我現在在dotnet core創建了一個網站。該網站是住在,並主持在天藍。我建立了ssl證書,並將其綁定到該網站。.net核心使用https/ssl。我必須重定向嗎?

有什麼我必須做的web.config或啓動,使SSL工作?

我無法看到使用https的網站。我必須在啓動時重定向嗎?

這裏是我結束了:

內startup.cs,配置()

app.Use(async (context, next) => 
      { 
       if (context.Request.IsHttps) 
       { 
        await next(); 
       } 
       else 
       { 
        var withHttps = "https://" + context.Request.Host + context.Request.Path; 
        context.Response.Redirect(withHttps); 
       } 
      }); 
+0

當您瀏覽使用HTTPS站點 - 你得到了什麼迴應? (你看到什麼,http狀態碼等) –

回答

6

在啓動時可以配置整個網站需要HTTPS是這樣的:

EDITED :展示如何在生產中只需要https,但請注意,您可以輕鬆地在開發中使用https。

public Startup(IHostingEnvironment env) 
{ 
    ... 
    environment = env; 

} 


public IHostingEnvironment environment { get; set; } 

public void ConfigureServices(IServiceCollection services) 
{ 
    ... 
    services.Configure<MvcOptions>(options => 
    { 

     if(environment.IsProduction()) 
     { 
      options.Filters.Add(new RequireHttpsAttribute()); 
     } 

    }); 
} 
+0

太棒了。我可以檢查站點是否在本地主機上運行,​​或者不在ConfigureServices()中? – sindrem

+0

我已經更新了我的答案,以顯示如何才能啓用它只在生產 –

+0

在啓動時,它不會是理想的基礎邏輯主機名像本地主機,因爲這是一個請求的事情不是一個啓動的事情,你可以使用配置設置或如圖所示的環境 –

1

隨着發佈ASP.NET的核心1.0.0更新您的啓動類:

public void ConfigureServices(IServiceCollection services) 
{ 
    // ... 

    services.AddMvc(); 

    services.Configure<MvcOptions>(options => 
    { 
     options.Filters.Add(new RequireHttpsAttribute()); 
    }); 

    // ... 
}