Asp.net-Mvc
找不到與名為“使用者”的控制器匹配的類型
我正在嘗試導航到其 URL 採用以下格式的頁面:localhost:xxxxx/User/{id}/VerifyEmail?secretKey=xxxxxxxxxxxxxxx
我在
RouteConfig.cs文件中添加了一條新路線,所以我RouteConfig.cs看起來像這樣:public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "VerifyEmail", url: "User/{id}/VerifyEmail", defaults: new { controller = "User", action = "VerifyEmail" } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } }不幸的是,當我嘗試導航到該 URL 時,我得到了這個頁面:
<Error> <Message> No HTTP resource was found that matches the request URI 'http://localhost:52684/User/f2acc4d0-2e03-4d72-99b6-9b9b85bd661a/VerifyEmail?secretKey=e9bf3924-681c-4afc-a8b0-3fd58eba93fe'. </Message> <MessageDetail> No type was found that matches the controller named 'User'. </MessageDetail> </Error>這是我的使用者控制器:
public class UserController : Controller { // GET /User/{id}/VerifyEmail [HttpGet] public ActionResult VerifyEmail(string id, string secretKey) { try { User user = UsersBL.Instance.Verify(id, secretKey); //logger.Debug(String.Format("User %s just signed-in in by email.", user.DebugDescription())); } catch (Exception e) { throw new Exception("Failed", e); } return View(); } }請告訴我我做錯了什麼?
就我而言,在花了將近 30 分鐘試圖解決問題後,我發現了導致它的原因:
我定義的路線
WebApiConfig.cs是這樣的:config.Routes.MapHttpRoute( name: "ControllersApi", routeTemplate: "{controller}/{action}" );它應該是這樣的:
config.Routes.MapHttpRoute( name: "ControllersApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } );如您所見,它干擾了
RouteConfig.cs.
在我的例子中,控制器被定義為:
public class DocumentAPI : ApiController { }將其更改為以下工作!
public class DocumentAPIController : ApiController { }類名必須以Controller結尾!
編輯:正如@Corey Alix 所建議的,請確保控制器具有公共訪問修飾符;路由處理程序忽略非公共控制器!