cod*_*ips 7 asp.net-mvc ssl https asp.net-identity asp.net-core
我最近在 Visual Studio 2019 中创建了一个 ASP.NET Core 3.0 Web 应用程序项目(启用了 Docker,但我认为这不相关),并且在包含 ASP.NET Identity 时似乎无法禁用 HTTPS个人用户帐户。每当我在调试器中启动应用程序时,页面都会使用 HTTPS 打开并导航到 HTTP 将我再次重定向回来。
我尝试创建一个新项目来测试正在发生的事情,并发现以下内容:
创建项目时,我启用了 ASP.NET Identity 以便在我的应用程序中使用本地帐户,并且我注意到如果我再次通过向导以创建具有相同设置的项目(启用了 Identity 的 Web 应用程序)对于个人用户帐户)取消选中启用 HTTPS 框的选项似乎是灰色的。
创建项目后,我尝试Startup.cs通过注释掉相关行来禁用 HTTPS 重定向中间件:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
//app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
Run Code Online (Sandbox Code Playgroud)
并已编辑launchSettings.json以尝试在调试时使用 HTTP 而不是 HTTPS 运行应用程序,但应用程序仍尝试使用 HTTPS 加载。
launchSettings.json 前:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51767",
"sslPort": 44396
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"HTTPSTest": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_URLS": "https://+:443;http://+:80",
"ASPNETCORE_HTTPS_PORT": "44397"
},
"httpPort": 51777,
"useSSL": true,
"sslPort": 44397
}
}
}
Run Code Online (Sandbox Code Playgroud)
launchSettings.json 后:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:51767"
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"HTTPSTest": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
},
"httpPort": 51777
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道我接下来可以尝试什么?我希望该应用程序位于 SSL 终止反向代理之后,所以我认为禁用它并不是不合理的。
所以我实际上设法解决了这个问题。我在 Visual Studio 使用 HTTPS 打开应用程序时看到的问题是 Visual Studio 的问题。
在另一台计算机上运行相同的设置,通过注释掉其中的app.UseHttpsRedirection()行Startup.cs并删除 SSL 引用,launchSettings.json就像我原来的帖子一样,运行得很好 - 运行调试器使用 HTTP 打开页面并能够连接到应用程序。
为了让一切重新工作,我尝试完全删除 Visual Studio,重新启动,重新安装并重试,但仍然遇到相同的问题。最后,我还必须删除AppData用户目录下的所有 Visual Studio 文件夹,然后重新安装 Visual Studio,然后当我尝试调试我的项目时,它终于再次工作了!
更新:
这实际上是在周末之后回来的,我发现这次我的问题是 HSTS 在 Chrome 中缓存了 HTTPS 的使用。可以在此处找到如何针对不同浏览器删除此内容的示例:https : //appuals.com/how-to-clear-or-disable-hsts-for-chrome-firefox-and-internet-explorer/
总之,对于 Chrome:
1. 导航到chrome://net-internals/#hsts
2. 在该Delete domain security policies部分中,输入localhost域并点击Delete按钮
更新 2 - 警告 虽然这个“修复”允许我使用 HTTP 运行我的项目,但我确实发现除非启用了 HTTPS,否则 Identity 不允许我登录 - 我认为这与 SignInManager 设置仅 HTTPS 身份验证有关cookie - 有关更多详细信息,请参见此处:AspNet Core Identity - cookie 未在生产中设置
| 归档时间: |
|
| 查看次数: |
9237 次 |
| 最近记录: |