我正在尝试浏览到其网址为以下格式的网页:
localhost:xxxxx / User / {id} / VerifyEmail?secretKey = xxxxxxxxxxxxxxx
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>
这里是我的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(); } }
请告诉我我做错了什么?
解决方法
在我花了几乎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中定义的标准路由。
原文地址:https://www.jb51.cc/aspnet/253927.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。