在 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 中强制区分大小写的路由 的相关文章

  • 如何找到 IIS 在负载/性能测试期间模拟的平均并发用户数?

    我正在使用 JMeter 进行负载测试 我正在练习通过简单地增加我的分布式 JMeter 测试用例中的线程数并启动测试来查找我们的网络服务器可以处理的最大并发线程 用户 数量 然后 我突然意识到 虽然 MAX 数字可能有用 但REAL我的网
  • 如何根据 ASP.NET VNEXT MVC6 中给出的路径进行虚拟路由/重定向?

    我有一个网站 它在不同的路径上公开多个 API 每个 API 由特定于应用程序部分的控制器处理 例如example com Api Controller Action param1 stuff 其中控制器发生变化 但操作保持相当一致 我有几
  • Microsoft.Extensions.Caching.Redis 选择与 db0 不同的数据库

    一个关于了解使用哪个redis数据库以及如何配置它的问题 我有一个默认值ASP NET Core Web 应用程序和默认配置的本地redis服务器 含15个数据库 通过包管理控制台我已经安装了 Install Package Microso
  • PostAsync 方法的 HttpClient 错误

    使用 HttpClient 对第 3 方 API 进行 PostAsync 调用时 当我执行 client PostAsync 时 我正好看到此错误 知道是什么原因造成的吗 Code public class JobController A
  • 如何将 Orchard CMS 与当前的 MVC2 应用程序集成?

    对于我的项目 客户端有一个现有的 ASP NET MVC 2 Web 应用程序 该应用程序具有产品目录和购物车功能 客户正在重新设计他们的网站 并希望使用 Orchard 来维护他们的内容页面 例如主页 关于 服务等 他们希望尽可能多地使用
  • MVC 项目中的 .Rdlc 报告 - 托管调试助手“PInvokeStackImbalance”

    我即将完成并运行我的上一份报告 我在其他报告中没有遇到过这个问题 我正在尝试根据数据库记录创建报告 当我通过 LocalReport 创建报告并为报告创建参数时 收到错误消息 托管调试助手 PInvokeStackImbalance 调用
  • 古老的“字幕”标签的替代品?

    marquee 标签的标准等效项是什么 我正在寻找 HTML C asp NET 或 ASPX jquery java 脚本的解决方案 marquee 标签未包含在标准中 因为它是 视觉 标签 而不是 语义 标签 因此 您想要的任何语言都没
  • asp.net mvc:将 RedirectToAction(string, object) 转换为 RedirectToAction(x => x.Detail(id))

    任何人都知道如何创建一个方法 我将把它放在扩展类中 该方法将仅使用表达式 无魔术字符串 与 mvc 的 RedirectToAction 执行相同的操作 所以不要写这样的东西 RedirectToAction Detail new Rout
  • 当用户告诉浏览器“刷新”时,是否应该填写 HTTP_REFERER?

    我正在尝试使用引用标头检查作为深度防御 即多种安全技术之一 但请注意仅依赖于任何一种技术 有时 MSIE 似乎不包含刷新时的引荐来源网址 这是预期的行为吗 无论如何 我是否可以检测刷新 以便我知道缺少引荐来源网址是可以的 是的 我知道引荐来
  • 构建 ViewModel 的合适粒度是多少?

    我正在开发一个新项目 在看到以前项目的一些困难后 这些项目没有提供足够的视图与模型的分离 特别是使用 MVC 模型和视图开始有点相互渗透 我想使用 MVVM 我了解基本概念 并且很高兴开始使用它 然而 有一件事我有点忽略 ViewModel
  • 使用实体框架重叠约会

    我将 asp net mvc 与实体框架一起使用 我有一个包含 startat 字段 endat 字段和 roomid 字段 称为 SpaceConfigurationId 的约会列表 并且希望查找给定房间已重复预订的约会列表 可以假设 e
  • IsReusable 属性中的上下文切换

    是否可重用属性 下面是我的理解IsReusable财产 如果处理程序返回静态内容 将值设置为 true 是安全的 但如果线程返回动态内容 为了使其线程安全 IsReusable应设置为 false 在这种情况下 可能会发生上下文切换 这可能
  • 如何终止会话或会话 ID (ASP.NET/C#)

    当用户单击注销按钮时 如何销毁会话 会话 名称 我正在 MSDN 上查看 ASP NET API Reference 它似乎没有太多信息 看来还是比较有限的 但我找不到 ASP NET 类等的任何其他页面 我努力了 Session Aban
  • 从备用位置获取实体框架连接字符串?

    如何从自定义配置文件而不是 web config 检索 Entity Framework 4 连接字符串 编辑 删除默认构造函数生成的代码并在分部类中重新创建它以使用拉入的连接字符串是否合理 我真的很想避免使用包括连接字符串在内的重载方法更
  • jQuery Datatable:分页和过滤器显示不正确

    我不知道如何解决这个问题 尝试了一整天但没有成功修复分页 我正在使用 jQuery 数据表 并且为了显示我的大量数据 我正在使用服务器端 作为测试 仅调用表中的 10 行数据 然后在传递到表之前 我重组了里面的数据dataSrc 使用这个解
  • 当集合提交回控制器时,未将对象引用设置为对象的实例。错误

    我正在更新多条记录 单击提交按钮后出现错误 这表明控制器收到 NULL 并在第 36 行报告以下错误 下面是我的控制器 视图和模型的代码 你调用的对象是空的 描述 执行当前 Web 请求期间发生未处理的异常 请检查堆栈跟踪 有关该错误及其起
  • 如何获取正在访问 ASP.NET 应用程序的当前用户?

    为了获取系统中当前登录的用户 我使用以下代码 string opl System Security Principal WindowsIdentity GetCurrent Name ToString 我正在开发一个 ASP NET 应用程
  • 表单身份验证 MVC4

    我正在尝试使用 MVC4 网站进行简单的表单身份验证设置 在App start FilterConfig cs中 public static void RegisterGlobalFilters GlobalFilterCollection
  • 不可勾选的单选按钮与专有的复选框

    从 UI 角度来看 是拥有一组具有取消选中功能的单选按钮更好 还是拥有一组独占的复选框 意味着一次只能选中一个 更好 Update 我没想到对此会有如此负面的反应 如果我给出一个更接近其使用方式的示例 也许会有所帮助 我有一个充满数据绑定内
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p

随机推荐

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

    我正在创建一个小型 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想要强制所有路由