【发布时间】:2020-07-12 20:57:08
【问题描述】:
我已将我的项目设置为始终重定向到 https,当用户键入 http://website.com or website.com 时它可以工作,但当他键入 http://www.website.com or https://www.website.com or www.website.com 时它不起作用
这是我的设置:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddHttpsRedirection(options =>
{
options.HttpsPort = 443;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
在Configure 里面我确实有app.UseHttpsRedirection();
项目在.NET Core 2.1开发
一段时间后,我又回到了这个问题,因为它还没有通过以下任何答案解决。
这是我启动的完整代码 - 因为我尝试了很多东西,所以它搞砸了,公平地说,我现在迷路了......
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Rewrite;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Termodom.Models;
namespace Termodom
{
public class Startup
{
public static string Version = "v1.2.0.0";
public Startup(IConfiguration configuration)
{
Configuration = configuration;
Initialize();
}
public IConfiguration Configuration { get; }
private void Initialize()
{
AR.AR.ConnectionString = Program.ConnectionString;
AR.ARWebAuthorization.ARWebAuthorization.AutoUserTimeout = true;
AR.TDShop.Buffer.Started = true;
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
if (true == true) // Do not mind this
{
services.AddHsts(ops =>
{
ops.Preload = true;
ops.IncludeSubDomains = true;
});
services.AddHttpsRedirection(options =>
{
options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
options.HttpsPort = 443;
});
}
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
AR.Statistic.Visits.Initialize(Path.Combine(env.WebRootPath, "Statistics"));
AR.Statistic.Visitors.Initialize(Path.Combine(env.WebRootPath, "Statistics"));
var cultureInfo = new CultureInfo("en-US");
cultureInfo.NumberFormat.NumberGroupSeparator = ",";
cultureInfo.NumberFormat.NumberDecimalSeparator = ".";
cultureInfo.NumberFormat.CurrencyDecimalSeparator = ",";
cultureInfo.NumberFormat.CurrencyGroupSeparator = ",";
CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
// app.UseRewriter(new RewriteOptions().AddRedirectToHttps(StatusCodes.Status301MovedPermanently, 443));
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
app.Run(async (context) =>
{
Program.AbsolutePath = env.WebRootPath;
});
}
}
}
【问题讨论】:
标签: c# asp.net asp.net-core dns