【问题标题】:.net core using https/ssl. Do i have to redirect?.net 核心使用 https/ssl。我必须重定向吗?
【发布时间】:2016-09-06 17:24:55
【问题描述】:

我现在在 dotnet core 中创建了一个网站。该站点在 azure 中运行并托管。我已经设置了 ssl 证书,并将其绑定到站点。

我必须在 web.config 或启动中做些什么才能使 ssl 工作吗?

我看不到使用 https 的网站。我必须在启动时重定向吗?

这是我最终得到的结果:

在 startup.cs 中,configure()

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);
                }
            });

【问题讨论】:

  • 当您使用 https 浏览网站时,您会得到什么响应? (你看到了什么,http 状态码等)

标签: asp.net-core


【解决方案1】:

在启动时,您可以将整个站点配置为需要 https,如下所示:

已编辑:展示如何在生产中只需要 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());
         }

    });
}

【讨论】:

  • 太棒了。我可以在 ConfigureServices() 中检查站点是否在 localhost 上运行吗?
  • 我已经更新了我的答案,以展示如何仅在生产中启用它
  • 在启动时尝试将逻辑基于主机名(如 localhost)并不理想,因为这是每个请求的事情而不是启动的事情,您可以使用配置设置或环境,如图所示
【解决方案2】:

随着 Asp NET Core 1.0.0 的发布更新您的 Startup 类:

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

    services.AddMvc();

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

    // ...
}

【讨论】:

    猜你喜欢
    • 2013-02-06
    • 2014-08-14
    • 2019-11-28
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 2016-01-26
    • 2011-05-20
    • 1970-01-01
    相关资源
    最近更新 更多