У меня есть страница, расположенная в:
- Область с именем Action
- Контроллер с именем Message
- Метод с именем Index
Когда я захожу в свое приложение, я захожу в HomeController, который затем перенаправляет меня так:
public IActionResult Index()
{
return RedirectToAction("Index", "Messages", new { area = "Action" });
}
Однако я получаю эту ошибку:
Произошло необработанное исключениево время обработки запроса.InvalidOperationException: ни один маршрут не соответствует предоставленным значениям.Microsoft.AspNetCore.Mvc.Infrastructure.RedirectToActionResultExecutor.ExecuteAsync (контекст ActionContext, результат RedirectToActionResult)
Это очень долго, но я обнаружил, что оно имеет отношение к моей последней строке await.next () в моейStartup.cs:
app.Use(async (context, next) =>
{
if (context.Response.StatusCode == 404 && !context.Response.HasStarted)
{
string originalPath = context.Request.Path.Value;
context.Items["originalPath"] = originalPath;
context.Request.Path = "/Error/404";
await next();
}
if (context.Response.StatusCode == 401 && !context.Response.HasStarted)
{
string originalPath = context.Request.Path.Value;
context.Items["originalPath"] = originalPath;
context.Request.Path = "/Error/401";
await next();
}
if (context.Response.StatusCode == 302 && !context.Response.HasStarted && context.User.Identity.IsAuthenticated)
{
string originalPath = context.Request.Path.Value;
context.Items["originalPath"] = originalPath;
context.Request.Path = "/Error/302";
await next();
}
if (context.Response.StatusCode == 400 && !context.Response.HasStarted)
{
string originalPath = context.Request.Path.Value;
context.Items["originalPath"] = originalPath;
context.Request.Path = "/Error/400";
await next();
}
await next();
});
Это моя маршрутизация в Startup.cs также:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "areas",
template: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
У меня есть этот точный Startup.cs в других приложениях, и они работают нормально.Не знаете, что не так с этим?
РЕДАКТИРОВАТЬ:
Полное исключение:
Microsoft.AspNetCore.Mvc.Infrastructure.RedirectToActionResultExecutor.ExecuteAsync (контекст ActionContext,Результат RedirectToActionResult) Microsoft.AspNetCore.Mvc.RedirectToActionResult.ExecuteResultAsync (контекст ActionContext)Internal.ResourceInvoker.Rethrow (контекст ResultExecutedContext) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext (следующее состояние: ref, область действия, состояние объекта ref, bool isCompleted).Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter () Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow (контекст ResourceExecutedContext) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next (ссылка «Состояние следующее», «Область действия», «Состояние объекта», «bool isCompleted») Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeFilterPipelineAsync ()Routing.EndpointMiddleware.Invoke (HttpContext httpContext) Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke (HttpContext httpContext) Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Injectke.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (контекст HttpContext) SendEx.Startup + <> c +d.MoveNext () в Startup.cs + await next ();Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.MigrationsEndPointMiddleware.Invoke (контекст HttpContext) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke (HttpContext HttpContext) Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.DatabaseErrorPageMiddleware.Invoke (HttpContext HttpContext) Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (контекст HttpContext)
РЕДАКТИРОВАТЬ 2:
Когда я удалил действие перенаправления и заменил его возвратом Page ();Страница загружается.Это означает, что перенаправление области не работает?