Я очень новичок в ASP.NET Core и стараюсь создать свой первый веб-сайт. Я боролся с обработкой ошибок и действительно нуждался в некоторых советах.404 обработка ошибок для HTTPS?
Для обработки 404 ошибки я использовал код app.UseStatusCodePagesWithReExecute("/Home/Error/{0}");
в startup.cs
С домашнего контроллером
[HttpGet("Home/error/{errcode}")]
public IActionResult Error(int errCode)
{
return View("Error", errCode);
}
который, кажется, успешно поймать 404,500 ошибок и отображает страницу просмотры ошибки с правильным код. Вид ошибки в /Views/Shared/Error.cshtml
Но когда я добавить перенаправление с HTTP на HTTPS, как это в startup.cs
app.Use(async (context, next) =>
{
if (context.Request.IsHttps)
{
await next();
}
else
{
var httpsUrl = "https://" + context.Request.Host + context.Request.Path;
context.Response.Redirect(httpsUrl);
}
});
Обработка ошибок больше не будет работать и показывать Secure Connection Failed
Error code: SSL_ERROR_RX_RECORD_TOO_LONG
в Firefox
Теперь это выглядит так.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error/{0}");
// StatusCodePagesMiddleware to handle errors
app.UseStatusCodePagesWithReExecute("/Home/Error/{0}");
}
app.UseStaticFiles();
app.UseIdentity();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=LandingPage}/{id?}");
});
app.Use(async (context, next) =>
{
if (context.Request.IsHttps)
{
await next();
}
else
{
var httpsUrl = "https://" + context.Request.Host + context.Request.Path;
context.Response.Redirect(httpsUrl);
}
});
}
Как я могу обработать ошибку с HTTPS в ASP.NET MVC Core1.0, пожалуйста?
Большое вам спасибо!
МОЖЕТ ЛИ ВЫ ПОЗВОЛИТЬ ваши свойства confiugration? – Tinwor
Вы имеете в виду это? '{ "iisSettings": { "WindowsAuthentication": ложные, "anonymousAuthentication": правда, "iisExpress": { "applicationUrl": "HTTP: // локальный: 53519 /", "sslPort": 0 } }, ' –
chnage значение sslport и повторите попытку. В моей рабочей среде установлено 44300 и отлично работает – Tinwor