我正在尝试浏览到其网址为以下格式的网页:
localhost:xxxxx / User / {id} / VerifyEmail?secretKey = xxxxxxxxxxxxxxx @H_403_3@我在RouteConfig.cs文件中添加了一条新路由,因此我的RouteConfig.cs如下所示:
localhost:xxxxx / User / {id} / VerifyEmail?secretKey = xxxxxxxxxxxxxxx @H_403_3@我在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 } ); } }@H_403_3@不幸的是,当尝试导航到该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>@H_403_3@这里是我的UserController:
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(); } }@H_403_3@请告诉我我做错了什么?
解决方法
在我花了几乎30分钟尝试解决这个问题的时候,我发现是什么原因造成的:
@H_403_3@我在WebApiConfig.cs中定义的路由是这样的:
config.Routes.MapHttpRoute( name: "ControllersApi",routeTemplate: "{controller}/{action}" );@H_403_3@应该是这样的:
config.Routes.MapHttpRoute( name: "ControllersApi",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional } );@H_403_3@正如你所看到的那样,它干扰了RouteConfig.cs中定义的标准路由。