gpt4 book ai didi

asp.net - 在 ASP.NET MVC 中强制区分大小写的路由

转载 作者:行者123 更新时间:2023-12-02 02:05:58 25 4
gpt4 key购买 nike

这个问题是以类似但不完全相同的方式提出的(并且没有得到令我满意的解决)previouslyStack Overflowelsewhere .

来自 Linux 世界,我想使用 ASP.NET MVC,但避免使用相同但大小写不同的路由解析到同一页面。我不想想要强制所有路由都 100% 小写。

例如我希望 /Home/Something 成为有效路线,并且 /Home/somethingElse 也成为有效路线,但不是 /Home/something/home/somethingelse,给定 HomeController 中名为 SomethingsomethingElse 的两个函数。

我在 RegisterRoutes 函数中找不到任何方法来执行此操作,但也许我遗漏了一些明显的东西?我可以通过向每个 Controller 函数添加代码来轻松回答这个问题,但我显然试图避免这样做。

最理想的解决方案是捕获特定路由的所有排列,然后对任何与 Controller 功能的情况不完全匹配的排列进行301重定向。

最佳答案

经过大量搜索后,我无法找到任何执行此操作的方法。基本上,区分大小写和 IIS/ASP.NET 显然不能并存。

我们现在使用一些拼凑的方法来解决这个问题。代码已在github上开源(MIT许可):NeoSmart Web Toolkit ,特别是this file containing the SEO redirect code .

使用它非常简单: Controller 类中的每个 GET 方法都需要在开头添加这一行:

Seo.SeoRedirect(this);

SEO 重写类自动使用 C# 5.0 的 Caller Info 属性来完成繁重的工作,使上面的代码严格复制和粘贴。

理想情况下,我很想找到一种方法将该行代码转换为属性。例如,在 Controller 方法前添加 [CaseSensitive] 前缀将自动具有与在该行中写入相同的效果,但可惜的是,我(还不)知道如何执行此操作。

我也找不到任何方法来使用 Routing 类/结构来解决这个问题。这是一些不透明的代码!

关于asp.net - 在 ASP.NET MVC 中强制区分大小写的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022221/

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