Web Api - 如何自动转换为小写url参数

时间:2015-07-03 02:00:09

标签: c# asp.net asp.net-web-api

我有以下配置的路线:

routes.MapHttpRoute("oneKey",
                    "{controller}/{id}");

如果我转到端点/users/Maticicero,路线将被正确委派给GET班级中的UsersController方法。

但是我输入id参数就像输入Maticicero一样。 由于这是我的数据库的主键,并且比较区分大小写,我需要将我的id标准化为小写,即:

id = id.ToLower()

我必须在每个控制器和每个采用id参数的方法中执行此操作。

有没有办法告诉我的Web Api(或路由处理程序)自动降低这些参数(或整个URL)的大小写?

2 个答案:

答案 0 :(得分:1)

注册路线时,请尝试使用routes.LowercaseUrls = true;MSDN

  

RouteCollection.LowercaseUrls :   获取或设置一个值,该值指示是否将URL转换为   虚拟路径规范化时的小写。

但是当您使用http://host/controller?id=Maticicero

之类的请求时要小心
  

如果URL中包含查询字符串,则不包含该部分URL   转换为小写。

另请看一下这个问题:How can I have lowercase routes in ASP.NET MVC?

答案 1 :(得分:0)

您可以在Application_BeginRequest事件中捕获该网址,解析该网址,然后使用HttpContext.RewritePath修改原始网址。

https://msdn.microsoft.com/en-us/library/sa5wkk6d(v=vs.110).aspx