2015-11-12 23 views
8

HTTPS我如何试图做到这一点:在启动如何启用mvc6

1设置过滤器:

 public IServiceProvider ConfigureServices(IServiceCollection services) 
     { 
     //... 
     services.AddMvc(); 
     services.Configure<MvcOptions>(options => 
     { 
      options.Filters.Add(new RequireHttpsAttribute()); 
     }); 

2 - 集[RequireHttps]在cotroler

[RequireHttps] 
public class HomeController : BaseController 
{ 
    public ViewResult Index() 
    { 
     return View(); 
    } 
} 

3 - add in project.json

"kestrel": "Microsoft.AspNet.Hosting --server=Microsoft.AspNet.Server.Kestrel --server.urls=https://localhost:1234" 

而且还没有工作G。 我做错了什么?

+0

此问题适用于MVC6。在这种情况下,您添加了尽可能重复的答案没有帮助。 – Raskolnikov

回答

5

编辑:这是一个新功能,尚未在beta8尚未。我在Github的beta8标签中试图找到这个功能后就注意到了。看起来你现在唯一的解决方案是支持IIS(支持HTTPS)或者支持NGINX,同时为你添加该模块。

确保在您的Startup.cs/Configure方法中启用SSL。

它可以这样判定:

var certPath = "c:\\mycert.pfx"; 
app.UseKestrelHttps(new X509Certificate2(certPath, "certificatePassword")); 

行动过滤器将只作用于实际的URL。你确实需要监听一个带有证书的端口才能访问HTTP。

希望这会有所帮助。

Source to sample Startup.cs