【发布时间】:2017-02-13 17:39:09
【问题描述】:
我在约定路由旁边启用了 MVC 属性路由。每次运行应用程序时都会出现此错误。
类型的内联约束解析器 “DefaultInlineConstraintResolver”无法解决以下问题 内联约束:“字符串”。描述:未处理的异常 在执行当前 Web 请求期间发生。请 查看堆栈跟踪以获取有关错误和位置的更多信息 它起源于代码。
异常详细信息:System.InvalidOperationException:内联 “DefaultInlineConstraintResolver”类型的约束解析器是 无法解决以下内联约束:“字符串”。
这是堆栈跟踪:
[InvalidOperationException: 类型的内联约束解析器 “DefaultInlineConstraintResolver”无法解决以下问题 内联约束:“字符串”。]
System.Web.Mvc.Routing.InlineRouteTemplateParser.GetInlineConstraint(组 constraintGroup, Boolean isOptional, IInlineConstraintResolver 约束解析器)+389
System.Web.Mvc.Routing.InlineRouteTemplateParser.ParseRouteTemplate(字符串 routeTemplate,IDictionary2 defaults, IDictionary2 约束, IInlineConstraintResolver constraintResolver) +488
System.Web.Mvc.Routing.DirectRouteFactoryContext.CreateBuilder(字符串 模板,IInlineConstraintResolver constraintResolver) +308
System.Web.Mvc.Routing.DirectRouteFactoryContext.CreateBuilderInternal(字符串 模板)+48
System.Web.Mvc.Routing.DirectRouteFactoryContext.CreateBuilder(字符串 模板)+44
System.Web.Mvc.RouteAttribute.System.Web.Mvc.Routing.IDirectRouteFactory.CreateRoute(DirectRouteFactoryContext 上下文)+80
System.Web.Mvc.Routing.DefaultDirectRouteProvider.CreateRouteEntry(字符串 areaPrefix, String controllerPrefix, IDirectRouteFactory factory, IReadOnlyCollection1 actions, IInlineConstraintResolver constraintResolver, Boolean targetIsAction) +1151 个工厂, IReadOnlyCollection
System.Web.Mvc.Routing.DefaultDirectRouteProvider.CreateRouteEntries(String areaPrefix, String controllerPrefix, IReadOnlyCollection1 actions, IInlineConstraintResolver constraintResolver, Boolean targetIsAction) +1551 个工厂,IInlineConstraintResolver 约束解析器)+188
System.Web.Mvc.Routing.DefaultDirectRouteProvider.GetActionDirectRoutes(ActionDescriptor actionDescriptor, IReadOnlyList
System.Web.Mvc.Routing.DefaultDirectRouteProvider.GetDirectRoutes(ControllerDescriptor 控制器描述符,IReadOnlyList1 actionDescriptors, IInlineConstraintResolver constraintResolver) +2451 控制器类型,IInlineConstraintResolver constraintResolver, IDirectRouteProvider directRouteProvider) +234
System.Web.Mvc.Routing.AttributeRoutingMapper.AddRouteEntries(SubRouteCollection collector, IEnumerable
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollection 路由,IEnumerable`1 控制器类型,IInlineConstraintResolver constraintResolver, IDirectRouteProvider directRouteProvider) +333
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollection 路线,IInlineConstraintResolver 约束解析器, IDirectRouteProvider directRouteProvider) +398
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollection 路线,IInlineConstraintResolver constraintResolver) +192
System.Web.Mvc.RouteCollectionAttributeRoutingExtensions.MapMvcAttributeRoutes(RouteCollection 路线)+123
SocialManager.RouteConfig.RegisterRoutes(RouteCollection routes) 在 c:\Users\Naser Dostdar\Documents\Visual Studio 2013\Projects\SocialManager\SocialManager\App_Start\RouteConfig.cs:16 c:\Users\Naser 中的 SocialManager.MvcApplication.Application_Start() Dostdar\Documents\Visual Studio 2013\Projects\SocialManager\SocialManager\Global.asax.cs:18[HttpException (0x80004005): 类型的内联约束解析器 “DefaultInlineConstraintResolver”无法解决以下问题 内联约束:“字符串”。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext 上下文,HttpApplication 应用程序)+9942821
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext 上下文、MethodInfo[] 处理程序)+118
System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态, MethodInfo[] 处理程序、IntPtr appContext、HttpContext 上下文)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext 上下文)+352
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296[HttpException (0x80004005): 类型的内联约束解析器 “DefaultInlineConstraintResolver”无法解决以下问题 内联约束:“字符串”。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文) +9924184 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext 上下文) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest WR,HttpContext 上下文)+261
这是我的 Route.Config 文件的样子:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(null, "Page{page}",
new
{
controller = "Blogs",
action = "Index",
category =
(string)null
},
new { page = @"\d+" }
);
routes.MapRoute(null,
"{category}",
new { controller = "Blogs", action = "Edit", page = 1 }
);
routes.MapRoute(null,
"{category}/Page{page}",
new { controller = "Blogs", action = "List" },
new { page = @"\d+" }
);
routes.MapRoute(null, "{controller}/{action}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
P.S:我目前还没有在我的项目中定义任何 MVC 属性路由,只是想测试启用 MVC 属性路由功能。
Web API 版本:2.2
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-routing attributerouting