asp.net-mvc – 我可以在这里使用路由约束吗?
发布时间:2020-12-16 06:29:56 所属栏目:asp.Net 来源:网络整理
导读:如果我有以下网址: /someurl 我有两个域名: us.foo.com au.foo.com 我希望这个200(匹配): us.foo.com/someurl 但这到404(不匹配): au.foo.com/someurl 路线看起来像这样: RouteTable.Routes.MapRoute( "xyz route","someurl",new { controller = "X",ac
如果我有以下网址:
我有两个域名:
我希望这个200(匹配):
但这到404(不匹配):
路线看起来像这样: RouteTable.Routes.MapRoute( "xyz route","someurl",new { controller = "X",action = "Y" } ); 我猜是因为没有路由值,我不能基于主机限制URL?那是对的吗? 如果是这样,我怎么能这样做,除了动作中的以下(丑陋): if (cantViewThisUrlInThisDomain) return new HttpNotFoundResult(); 有人有任何想法吗? 我想我有点想通过它的域来限制路由,而不是路由令牌,如果这是有道理的. 解决方法
你可以写一个自定义路线:
public class MyRoute : Route { public MyRoute(string url,object defaults) : base(url,new RouteValueDictionary(defaults),new MvcRouteHandler()) { } public override RouteData GetRouteData(HttpContextBase httpContext) { var url = httpContext.Request.Url; if (!IsAllowedUrl(url)) { return null; } return base.GetRouteData(httpContext); } private bool IsAllowedUrl(Uri url) { // TODO: parse the url and decide whether you should allow // it or not throw new NotImplementedException(); } } 然后在Global.asax中的RegisterRoutes方法中注册它: routes.Add( "xyz route",new MyRoute( "{someurl}",new { controller = "Home",action = "Index" } ) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net – Response.IsClientConnected如何在幕
- asp.net-mvc – RedirectToAction()与View()和三
- VS2017搭建ASP.Net Core和Angular5项目
- asp.net – tinymce在回发时获取HTML代码
- asp.net – System.EntryPointNotFoundException
- Repeater排序的三种实现方式(附在线Demo)
- ASP.NET MVC和ORM选择
- asp.net-mvc – IIS Express – HTTP错误500.19
- asp.net-core – 什么是aspnet50和aspnetcore50?
- 是否使用ASP.NET配置文件?
热点阅读