在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 ...
}
它在生产中工作正常但在开发中没有。我想要:
答案 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答案 1 :(得分:3)
只需评论这一行:
rewriteOptions.AddRedirectToHttps();
或在Startup.cs注释上的.Net core的新版本中:
app.UseHttpsRedirection();
答案 2 :(得分:0)
如果您不想使用IIS Express,请在“项目属性”->“调试”部分->“应用程序网址”中删除https-地址。
答案 3 :(得分:-1)
使用#if !DEBUG
,如下所示:
public void ConfigureServices(IServiceCollection services) {
services.AddMvc(x => {
#if !DEBUG
x.Filters.Add(new RequireHttpsAttribute());
#endif
});
// Remaining code ...
}