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

Mig*_*ura 5 asp.net-core

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

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 ...
}
Run Code Online (Sandbox Code Playgroud)

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

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

mez*_*tou 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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

关于SSL点,您可以使用IIS Express轻松使用SSL(源代码)

在SSL中配置SSL


alb*_*bin 8

如果您不想使用 IIS Express,则删除项目属性中的 https 地址 -> 调试部分 -> 在“Web 服务器设置”下 -> 取消选中“启用 SSL”。

项目属性


小智 5

只需评论这一行:

rewriteOptions.AddRedirectToHttps();

或者在新版本的.Net core中关于Startup.cs的注释:

app.UseHttpsRedirection();


小智 -3

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

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