如何在mvc6中启用https

本文关键字:启用 https mvc6 | 更新日期: 2023-09-27 18:21:43

我是如何做到这一点的:

1-启动时设置过滤器:

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

2-在cotroler 中设置[RequireHttps]

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

3-附加项目.json

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

但仍然不起作用。我做错了什么?

如何在mvc6中启用https

编辑:这是beta8中尚未包含的新功能。在我尝试在Github的beta8标签中找到这个功能后,我注意到了这一点。目前看来,您唯一的解决方案是要么在IIS(支持HTTPS)后面,要么在NGINX后面,同时为您添加该模块。

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

它是这样做的:

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

操作过滤器将仅对实际URL进行操作。您确实需要在带有证书的端口上侦听HTTPs。

希望这能有所帮助。

Startup.cs 样本来源