- Области под названием «Действие»
- Контроллере под названием «Сообщение». >
- Метод под названием Index
Код: Выделить всё
public IActionResult Index()
{
return RedirectToAction("Index", "Messages", new { area = "Action" });
}
При обработке запроса произошло необработанное исключение.
InvalidOperationException : ни один маршрут не соответствует предоставленным значениям.
Microsoft.AspNetCore.Mvc.Infrastructure.RedirectToActionResultExecutor.ExecuteAsync(ActionContext
context, RedirectToActionResult result)
Оно очень длинное, но я обнаружил, что оно как-то связано с моей последней строкой 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();
});
Код: Выделить всё
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?}");
});
Полное исключение:
Microsoft.AspNetCore.Mvc.Infrastructure.RedirectToActionResultExecutor .ExecuteAsync(ActionContext
контекст, результат RedirectToActionResult)
Microsoft.AspNetCore.Mvc.RedirectToActionResult.ExecuteResultAsync(ActionContext
контекст)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultAsync( IActionResult
result)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResultFilterAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow(ResultExecutedContext)
контекст)
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.ResultNext(ref State next, ref Scopescope, ref object status, ref
bool isCompleted )
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeResultFilters()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeNextResourceFilter()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Rethrow (ResourceExecutedContext
контекст) Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.Next(ref
State next, ref Область области, ref состояние объекта, ref bool isCompleted)
Microsoft.AspNetCore.Mvc. Internal.ResourceInvoker.InvokeFilterPipelineAsync()
Microsoft.AspNetCore.Mvc.Internal.ResourceInvoker.InvokeAsync()
Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext
httpContext)
Microsoft .AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext
httpContext)
Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext
context)
Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke (HttpContext
контекст)
Microsoft.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
context)
Когда я удалил RedirectToAction() и заменил его возвращаемым Page(); Страница загружается. Значит, перенаправление области не работает?
Подробнее здесь: https://stackoverflow.com/questions/568 ... tion-error
Мобильная версия