Bea*_*ode 5 c# asp.net-mvc asp.net-mvc-routing attributerouting
我在约定路由旁边启用了 MVC 属性路由。每次运行应用程序时都会出现此错误。
“DefaultInlineConstraintResolver”类型的内联约束解析器无法解析以下内联约束:“字符串”。说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.InvalidOperationException:“DefaultInlineConstraintResolver”类型的内联约束解析器无法解析以下内联约束:“string”。
这是堆栈跟踪:
[InvalidOperationException异常:类型DefaultInlineConstraintResolver'的内联约束解算器无法解决以下内嵌约束:“字符串”]
System.Web.Mvc.Routing.InlineRouteTemplateParser.GetInlineConstraint(集团constraintGroup,布尔isOptional,IInlineConstraintResolver constraintResolver)389
系统.Web.Mvc.Routing.InlineRouteTemplateParser.ParseRouteTemplate(字符串routeTemplate,IDictionary的2 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(String template) +44
System.Web.Mvc.RouteAttribute.System.Web.Mvc.Routing.IDirectRouteFactory.CreateRoute(DirectRouteFactoryContext context) +80
System.Web.Mvc.Routing。 DefaultDirectRouteProvider.CreateRouteEntry(String areaPrefix, String controllerPrefix, IDirectRouteFactory factory, IReadOnlyCollection 1 factory, IReadOnlyCollection 1 factory, IInlineConstraintResolverconstraintResolver) +188 System.Web.Mvc.Routing.DefaultDirectRouteProvider.GetDirectRoutes(ControllerDescriptor controllerOnlyConstraintProvider, IsolvRoute controllerOntrainResolver, Isolver controllerOnlyResolver, IReadOnlyCollection 1 ) +2341 actions, IInlineConstraintResolver constraintResolver, Boolean targetIsAction) +115
System.Web.Mvc.Routing.DefaultDirectRouteProvider.CreateRouteEntries(String areaPrefix, String controllerPrefix, IReadOnlyCollection1 actions, IInlineConstraintResolver constraintResolver, Boolean targetIsAction) +155
System.Web.Mvc.Routing.DefaultDirectRouteProvider.GetActionDirectRoutes(ActionDescriptor actionDescriptor, IReadOnlyList1 actionDescriptors, IInlineConstraintResolver constraintResolver) +245
System.Web.Mvc.Routing.AttributeRoutingMapper.AddRouteEntries(SubRouteCollection collector, IEnumerable
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollection routes, IEnumerable`1 controllerTypes, IInlineConstraintResolverconstraintResolver, IDirectRouteProvider directRouteProvider) +333
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollectionDirectionConstraintProvider )+333 398
System.Web.Mvc.Routing.AttributeRoutingMapper.MapAttributeRoutes(RouteCollection routes, IInlineConstraintResolver constraintResolver) +192
System.Web.Mvc.RouteCollectionAttributeRoutingExtensions.MapMvcAttributeRoutes(RouteCollection routes) +123
SocialManager.RouteConfig.RegisterRoutes(RouteCollection routes) in c:\Users\Naser Dostdar\Documents\Visual Studio 2013\Projects\SocialManager\SocialManager\App_Start\RouteConfig.cs:16 SocialManager.MvcApplication.Application_Start() in c:\Users\ Naser Dostdar\Documents\Visual Studio 2013\Projects\SocialManager\SocialManager\Global.asax.cs:18[HttpException (0x80004005): 'DefaultInlineConstraintResolver' 类型的内联约束解析器无法解析以下内联约束:'string'。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9942821
System.Web.HttpApplication .RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext) , HttpContext 上下文) +352
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296[HttpException (0x80004005): 'DefaultInlineConstraintResolver' 类型的内联约束解析器无法解析以下内联约束:'string'。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +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 }
);
}
}
Run Code Online (Sandbox Code Playgroud)
PS:目前我还没有在我的项目中定义任何 MVC 属性路由,只是想测试启用 MVC 属性路由功能。
网页 API 版本:2.2
您在某处定义了属性路由。没有其他事情会导致此错误。在您完成此操作的地方,您已将其用作string路线约束。例如:
[Route("{foo:string}")]
Run Code Online (Sandbox Code Playgroud)
但是,string不是有效的路由约束,因为路由中的所有内容都是字符串。总而言之,找到您定义的包含:string和删除它的路由属性。