在开发中的ASP.NET核心项目上启用/禁用SSL

时间:2017-05-05 16:23:15

标签: asp.net-core

在ASP.NET Core项目中,我在生产中使用SSL,所以我在启动时使用:

public void ConfigureServices(IServiceCollection services) {
  services.AddMvc(x => {
    x.Filters.Add(new RequireHttpsAttribute());
  });  
  // Remaining code ...
}

public void Configure(IApplicationBuilder builder, IHostingEnvironment environment, ILoggerFactory logger, IApplicationLifetime lifetime) {
  RewriteOptions rewriteOptions = new RewriteOptions();
  rewriteOptions.AddRedirectToHttps();
  builder.UseRewriter(rewriteOptions);
  // Remaining code ...
}

它在生产中工作正常但在开发中没有。我想要:

  1. 在开发中禁用SSL;
  2. 使SSL在开发中工作,因为当前配置不是。 我是否需要在本地机器上设置任何PFX文件? 我正在研究多个项目,这可能会产生问题?

4 个答案:

答案 0 :(得分:12)

您可以使用IConfigureOptions<T>界面配置服务。

internal class ConfigureMvcOptions : IConfigureOptions<MvcOptions>
{
    private readonly IHostingEnvironment _env;
    public ConfigureMvcOptions(IHostingEnvironment env)
    {
        _env = env;
    }

    public void Configure(MvcOptions options)
    {
        if (_env.IsDevelopment())
        {
            options.SslPort = 44523;
        }
        else
        {
            options.Filters.Add(new RequireHttpsAttribute());
        }
    }
}

然后,将此类添加为单例:

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    var builder = services.AddMvc();
    services.AddSingleton<IConfigureOptions<MvcOptions>, ConfigureMvcOptions>();
}

关于SSL点,您可以使用IIS Express(source

轻松使用SSL

Configure SSL in SSL

答案 1 :(得分:3)

只需评论这一行:

rewriteOptions.AddRedirectToHttps();

或在Startup.cs注释上的.Net core的新版本中:

app.UseHttpsRedirection();

答案 2 :(得分:0)

如果您不想使用IIS Express,请在“项目属性”->“调试”部分->“应用程序网址”中删除https-地址。

ProjectProperties

答案 3 :(得分:-1)

使用#if !DEBUG,如下所示:

public void ConfigureServices(IServiceCollection services) {
  services.AddMvc(x => {
    #if !DEBUG
    x.Filters.Add(new RequireHttpsAttribute());
    #endif
  });  
  // Remaining code ...
}