【发布时间】:2012-11-29 11:07:41
【问题描述】:
ASP.NET 正在将请求路径中的反斜杠“规范化”为正斜杠,我需要它们作为反斜杠出现(它用于在数据库中执行查找)。我不介意转义的正斜杠是否未转义,这与 this question 不同。
config.Routes.MapHttpRoute(
name: "TransactionsApi",
routeTemplate: "api/transactions/{*transaction}",
defaults: new { controller = "transactions", transaction = RouteParameter.Optional }
);
请注意,我已设置事务以匹配路径的其余部分。
我尝试了以下 URL(来自浏览器和 Fiddler):
api/transactions/mscorlib.pdb\DFA83312EAB84F67BD225058B188F22B1\mscorlib.pdbapi/transactions/mscorlib.pdb\\DFA83312EAB84F67BD225058B188F22B1\\mscorlib.pdbapi/transactions/mscorlib.pdb%5CDFA83312EAB84F67BD225058B188F22B1%5Cmscorlib.pdbapi/transactions/mscorlib.pdb%5C%5CDFA83312EAB84F67BD225058B188F22B1%5C%5Cmscorlib.pdb
当他们使用我的 Web API 方法时,他们都是 mscorlib.pdb/DFA83312EAB84F67BD225058B188F22B1/mscorlib.pdb。我检查了当前的HttpContext,看起来 ASP.NET 正在执行此规范化(不是 MVC4)。
可能的解决方案:
- 在插入事务时,将“\”规范化为“/”,这样无论 ASP.NET 通过什么查找都会成功。 好像有点臭
-
Base64
{*transaction}部分(如果它包含反斜杠)。 地址栏不是真的可以破解
知道如何让 ASP.NET不进行这种规范化吗?
【问题讨论】:
标签: c# asp.net asp.net-mvc-4