我正在尝试传递一个url作为我的控制器的参数:
//Passed in via url like this:
//http://www.mydomain.com/Puzzle/ContinuePuzzle/{insert url here}
public ActionResult ContinuePuzzle(string url)
{
return View("PuzzleWrapper",
(object)_PuzzleService.ContinuePuzzle(url);
}
每当我尝试这个时,我都会收到一个http 400 Bad Request错误。我试过UrlEncoding它,但它仍然不喜欢它。有什么建议吗?
答案 0 :(得分:3)
我怀疑在URL中有两个方案声明导致默认路由处理程序抛出400响应。
作为一种解决方法,我只会发送不带方案的URL(即http://)。我测试了这个场景没有任何问题:
http://www.mydomain.com/Puzzle/ContinuePuzzle/www.domain.com/nextpuzzle
使用此路线:
routes.MapRoute("Puzzle", "Puzzle/ContinuePuzzle/{*url}", new {controller = "Puzzle", action = "ContinuePuzzle", url = ""});
如果你必须拥有该方案,那么使用像Charlino建议的查询字符串参数。
答案 1 :(得分:0)
如果你把它放在括号中怎么办?
让网址上的http://再次启动是一个无效的地址。
http://www.mydomain.com/Puzzle/ContinuePuzzle/(http://mypuzzlingdomain.com/?a4)
也许大括号也可以起作用。
答案 2 :(得分:-1)
UrlEncode它但是把它作为get变量传递......?
E.g。 http://www.mydomain.com/Puzzle/ContinuePuzzle?url=http%3a%2f%2fmypuzzlingdomain.com%2f%3fa4