数据具有特殊符号时的URL路由问题

时间:2013-01-30 10:57:50

标签: asp.net-mvc extjs

我开发了一个ASP.NET MVC应用程序。我有一个名为EmployeeController的控制器,它有一个名为GetEmployeeByName的方法。 GetEmployeeByName()将string类型的名称作为参数。

所以当我发送这样的请求时,我会收到数据: someDomain:9999 / Employee / GetEmployeeByName / Roger Federer

但如果名称包含'&' (你和我),我得到一个'400 Bad Request'作为来自服务器的回复。

someDomain:9999 /雇员/ GetEmployeeByName /你%20安培;%20me

即使我编码它也不会重新发回一个 someDomain:9999 /雇员/ GetEmployeeByName /你%20安培;%20me

对此类(具有特殊字符的数据)数据进行编码的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

  

对这种(具有特殊字符的数据)数据进行编码的正确方法是什么?

正确的方法是使用查询字符串参数,而不是将这些内容作为uri部分的一部分。阅读Scott Hansleman的following blog post。我只会引用一个结论:

  

在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样   值得一提的是,只需将值保留为Query的一部分   字符串(记得在这篇文章的开头回答?)更容易,   更清洁,更灵活,更安全。

正如你在博客文章中看到的,有一些hacky方法可以使它工作并绕过IIS处理,但它根本不是我建议你冒险的东西。只需将此名称放在查询字符串中即可。