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

2023-12-03

这个问题是以类似但不完全相同的方式提出的(并且没有得到令我满意的解决)之前 on 堆栈溢出 and 别处.

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

例如我想/Home/Something是一条有效的路线并且/Home/somethingElse也是有效的路线,但不是/Home/something or /home/somethingelse,给定两个函数Something and somethingElse in the HomeController.

我找不到任何方法可以从内部做到这一点RegisterRoutes功能,但也许我错过了一些明显的东西?我可以通过向每个控制器函数添加代码来轻松回答这个问题,但我显然试图避免这样做。

最理想的解决方案是捕获all特定路由的排列,然后 301 重定向任何与控制器功能的情况不完全匹配的内容。


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

我们现在使用一些拼凑的方法来解决这个问题。代码已在github上开源(MIT许可):NeoSmart 网络工具包, 尤其,该文件包含 SEO 重定向代码.

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

Seo.SeoRedirect(this);

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

理想情况下,我很想找到一种方法将该行代码转换为属性。例如,在控制器方法前加上前缀[CaseSensitive]会自动产生与在该行中写入相同的效果,但可惜的是,我(还不)知道如何做到这一点。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 中强制区分大小写的路由 的相关文章

随机推荐

  • 我不确定什么是不正确的

    我正在创建一个小型 Java Jpanel 游戏 其中我应该有一个通过箭头上下移动并通过空间发射的火箭 发射方法应该像这样工作 按下空格键 物体发射并在屏幕上移动 然后当它击中某个 x 时 它就会消失 此外 你只能开火一次 直到另一颗子弹消
  • 为什么同一范围内可以进行多个可变借用?

    我编写了这段代码 多次借用可变变量并且编译时没有任何错误 但是根据Rust 编程语言这不应该编译 fn main let mut s String from hello println s test three mut s println
  • 读取生成线程内的不可变值

    我正在努力让这个例子发挥作用 use std sync mpsc Sender Receiver use std sync mpsc use std thread use std sync Arc struct User reference
  • 多个 GZip 文件的快速串联

    我有 gzip 文件列表 file1 gz file2 gz file3 gz 有没有一种方法可以将这些文件连接或 gzip 到一个 gzip 文件中无需解压 them 在实践中 我们将在网络数据库 CGI 中使用它 网络将在哪里接收 来自
  • 从 VB.Net 中的数据表填充组合框的最快方法

    以下代码中的数据表填充了 7500 条记录 这一切都可以从服务器快速加载 问题在于循环数据行以将它们添加到组合框需要一段时间 是否有任何其他方法来设置组合框的数据源或加快此过程的方法 Dim dtColours As New DataTab
  • 如何使用 XSLT1 按标签折叠一组选定的(相邻)标签?

    我有一组必须包含在新元素中的顺序节点 例子
  • 如何在 Firefox 中启用 ActiveX 控件?

    我有一个使用 ActiveX 控件的应用程序 我想使用 Selenium IDE 自动执行此操作 但是当我启动应用程序时 我最终收到一条错误消息 打开 ActiveX 控件 有什么办法可以在 FireFox 中启用 ActiveX 吗 注意
  • 在图中寻找桥梁 C++ (BOOST)?

    我正在阅读 BOOST 库 注意到他们没有一种算法可以在图中找到桥梁 但他们确实有一个可以找到连接点的算法 无论如何 这可以有效地完成吗 我有个主意 1 使用 BOOST 寻找关节点 2 使用out edges 找到连接每个关节点的所有边
  • Stripe 禁用按比例分配

    我的 Stripe 订阅中有两个计划 第一个计划是每月 10 欧元的计划 直到特定日期为止 例如它于 2021 年 10 月 2 日开始 我希望它于 2021 年 7 月 15 日结束 我希望订阅者每月始终支付 10 欧元 即使是最后一个月
  • 如何在默认打印机上打印测试页?

    如何在默认打印机上打印测试页 使用 C Winform 代码 提前致谢 要生成内置 Windows 测试页 您还可以对 PrintUI dll 使用 p invoke 这是一个简单的类 可以让您执行此操作 public static cla
  • 使用命令行克隆 git 存储库成功,但使用 git GUI 客户端(例如 SourceTree)克隆失败

    我已经设置了一个gitMac OS X 10 7 系统上的用户 在 git 用户 root 中 我创建了一个repositories文件夹并初始化了一个名为的裸 git 存储库test 到目前为止 一切都很好 现在 我从与 Mac 位于同一
  • 如何停止在 Spring 中覆盖 bean

    我注意到 如果您在两个 xml 文件中定义具有相同 id 的 bean 它将在第二个文件中被覆盖 Say in file a xml i have
  • 何时在 Activity 中调用 findViewById

    我遇到以下问题 我有以下几行代码 Spinner domainSpinner Spinner findViewById R id domain domainSpinner setVisibility View VISIBLE 这些在用户单击
  • 如何将图标添加到WPF应用程序桌面快捷方式?

    请注意 我问的是桌面图标 而不是窗口图标 该图标显示在应用程序窗口上 这可以 但是当我运行安装程序来安装应用程序时 桌面快捷方式只有一个默认图标 如何将桌面图标与同一应用程序图标关联 当应用程序运行时 任务栏上的图标是正确的图标 我还将 i
  • PowerShell DSC 复合资源

    我已成功创建 DSC 配置并将其部署到服务器上 下一步 我尝试将服务器中常见的配置块部分分解为可重用的部分 或者用 DSC 的说法是 复合资源 经过大量研究后 我仍然无法使用复合资源 运行 Get DSCResource 时它们没有列出 查
  • Django-south 未检测到数据库更改

    我已经从 svn 更新了我们的项目 并且有了新的迁移文件 当我使用时 work manage py schemamigration mypackage auto 我有这样的消息 Nothing seems to have changed 但
  • 返回字段长度/大小的投影选项

    我只是想写一个像 SQL 一样的 mongo 查询 SELECT LENGTH binaryBody AS bodyLength FROM documents 为此 我想我必须使用 find 方法的投影 db documents find
  • 使用 XSL-FO 和 HTML?

    我正在尝试使用 XSLT 将一些 XML 数据转换为 HTML 以完成我的学士论文 我的教授希望我也考虑 XSL FO 或者至少写一些关于它的文字 但我对此很菜鸟 所以我的问题是 我可以将 FO 与 HTML 结合起来吗 我可以使用 FOR
  • WordPress - 按日期范围获取帖子

    我正在尝试获取过去 7 30 和 365 天 WordPress 的帖子列表 这是我使用的代码 args array posts per page gt 10 post status gt publish post type gt post
  • 在 ASP.NET MVC 中强制区分大小写的路由

    这个问题是以类似但不完全相同的方式提出的 并且没有得到令我满意的解决 之前 on 堆栈溢出 and 别处 来自 Linux 世界 我想使用 ASP NET MVC 但避免使用相同但大小写不同的路由解析到同一页面 我愿意not想要强制所有路由