gpt4 book ai didi

asp.net-mvc - 我可以在这里使用路线约束吗?

转载 作者:行者123 更新时间:2023-12-05 00:03:03 24 4
gpt4 key购买 nike

如果我有以下网址:

/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", action = "Y" }
);

我猜是因为没有路由值,我不能根据主机限制 URL?那是对的吗?

如果是这样,除了操作中的以下(丑陋)之外,我该怎么做:
if (cantViewThisUrlInThisDomain)
return new HttpNotFoundResult();

有人有任何想法吗?

我想我正在寻找一种通过它的域而不是路由 token 来约束路由的方法,如果这有意义的话。

最佳答案

您可以编写自定义路由:

    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();
}
}

然后在 RegisterRoutes注册 Global.asax 中的方法:
routes.Add(
"xyz route",
new MyRoute(
"{someurl}",
new { controller = "Home", action = "Index" }
)
);

关于asp.net-mvc - 我可以在这里使用路线约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7226719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com