我有这个行动方法:
From 7083c4145878f954bbde14f1f6acbb31414c88d9 Mon Sep 17 00:00:00 2001
From: fedor patlin <patlin.f@sovzond.center>
Date: Fri, 18 Dec 2015 15:55:32 +0500
Subject: [PATCH] Set field hashCodeField accessible
---
core/src/main/java/io/undertow/util/HttpString.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/core/src/main/java/io/undertow/util/HttpString.java b/core/src/main/java/io/undertow/util/HttpString.java
index cc75a0b..d21257c 100644
--- a/core/src/main/java/io/undertow/util/HttpString.java
+++ b/core/src/main/java/io/undertow/util/HttpString.java
@@ -335,7 +335,9 @@ public final class HttpString implements Comparable<HttpString>, Serializable {
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject();
try {
+ hashCodeField.setAccessible(true);
hashCodeField.setInt(this, calcHashCode(bytes));
+ hashCodeField.setAccessible(false);
} catch (IllegalAccessException e) {
throw new IllegalAccessError(e.getMessage());
}
--
2.5.0
我有两个这样的路由器:
public virtual ActionResult NewsByCategory(int code)
{...}
我有以下请求:
routes.MapRoute("lang",
"{lang}/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "CMS.mvcApp.Controllers" });
routes.MapRoute("langCode",
"{lang}/{controller}/{action}/{code}",
new { controller = "Home", action = "Index", code = UrlParameter.Optional },
new[] { "CMS.mvcApp.Controllers" });
我收到此错误:
参数字典包含参数&#39;代码的空条目。非可空类型的System.Int32&#39; for method&#39; System.Web.Mvc.ActionResult NewsByCategory(Int32)&#39;在&#39; CMS.mvcApp.Controllers.NewsController&#39;。可选参数必须是引用类型,可空类型,或者声明为可选参数
为什么它不起作用?
答案 0 :(得分:3)
MVC正在使用您在route.config中声明的第一个路由 文件。 MVC以这样一种方式工作,即只要它找到任何匹配 路由它不会在您的配置中查找下一个声明的路由。那么你 应始终在列表顶部和大多数位置添加最具体的路线 列表底部的通用路线。
您还可以使用参数类型的约束。