У меня есть странная ошибка, которая продолжает появляться, обычно во время отладки, где я получу один маршрут, выбрасывающий это исключение из ниоткуда, и продолжу для этого маршрута, пока я не остановлю отладку. Странно то, что у меня есть только одно действие, которое когда-либо будет совпадать, и только одно действие с таким именем, только контроллер и т. Д. c.
Мой вопрос: кто-нибудь сталкивался с таким странным поведением? Какие-нибудь исправления? Это сохраняется после восстановления установки Visual Studio 2019, перезагрузок и т. Д. c. Я думаю, что это проблема с проектом, но я не могу найти ничего с поиском Google, и я понятия не имею, где даже начать искать. Нет никакого способа сопоставления с запасным маршрутом в RouteConfig.cs И атрибутом route, верно?
Обновление: произошло даже после следующих предложений по очистке подобных маршрутов в routeconfig.cs, происходящих на отдельном контроллере (еще один атрибут маршрутизируемого контроллера). Подробности добавлены ниже.
Текущий запрос неоднозначен между следующими методами действия:
System.Web. Mvc .ActionResult Getquestions (System.String, System.String, System.Web. Mvc .FormCollection) для типа> Origin2.Controllers.Events2.Events2APIController
System.Web. Mvc .ActionResult Getquestions (System.String, System.String, System.Web. Mvc .FormCollection) on type> Origin2.Controllers.Events2.Events2APIController
Урезанный контроллер:
using ...
namespace Origin2.Controllers.Events2
{
[RoutePrefix("app/api/Events")]
public class Events2APIController : Controller
{
[Route("{code}/questions/GET")]
[HttpPost]
public ActionResult Getquestions(string code, string mode, FormCollection collection)
{
//CODE LIVES HERE.
}
protected override void OnException(ExceptionContext filterContext)
{
ExceptionNotifications.SendNotice(filterContext, null, "Events2 API Controller");
}
}
}
Урезанный routeconfig.cs
using Origin2.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace Origin2
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes(); //Attribute Routing Enabled
//External
routes.MapRoute(
name: "External",
url: "app/external/{id}",
defaults: new { controller = "External", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "app",
url: "app/{action}/{*id}",
defaults: new { controller = "app", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "app2",
url: "app/{action}",
defaults: new { controller = "app", action = "Index" }
);
routes.MapRoute(
name: "DefaultApp",
url: "app/{controller}/{action}/{**id}",
defaults: new { controller = "app", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "DefaultApp2",
url: "app/{controller}/{action}",
defaults: new { controller = "app", action = "Index" }
);
routes.MapRoute(
name: "DebugShorthand",
url: "debug",
defaults: new { controller = "app", action = "Debug" }
);
routes.MapRoute(
name: "RootAddress",
url: "",
defaults: new { controller = "app", action = "Index" }
);
routes.MapRoute(
name: "DefaultOrigin1",
url: "app/{*url}",
defaults: new { controller = "app", action = "SendToOrigin1" }
);
}
}
}
После исправления routeconfig. Неоднозначный маршрут cs.
Текущий запрос неоднозначен между следующими методами действия:
System.Web. Mvc .ActionResult EventLanding (System.String) для типа Origin2.Controllers .Events2.Events2Controller
System.Web. Mvc .ActionResult EventLanding (System.String) для типа Origin2.Controllers.Events2.Events2Controller
Урезанные события2Контроллер: * 1 031 *
using Origin2.Models;
using Origin2.Models.Events2;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using static Origin2.Models.Events2.EventRoles;
namespace Origin2.Controllers.Events2
{
[RoutePrefix("app/Events")]
[Route("{action=index}")]
public class Events2Controller : Controller
{
[Route("{code}")]
public ActionResult EventLanding(string code)
{
//This will be the public facing thank you handler for all signup activities.
if (code.ToUpper() == "AAABD")
{
return View("EventLandingCustom_AAABD");
}
return View();
}
protected override void OnException(ExceptionContext filterContext)
{
ExceptionNotifications.SendNotice(filterContext, null, "Events2 Controller");
// Redirect on error:
//filterContext.Result = RedirectToAction("Error", "Index");
}
}
}