gpt4 book ai didi

c# - 将字符串作为包含斜线或为空的 uri 参数传递

转载 作者:太空宇宙 更新时间:2023-11-03 13:48:36 25 4
gpt4 key购买 nike

我在 ASP.NET Web API 路由方面遇到了问题。具体来说,我想传递一个字符串参数,该参数要么为空,要么在 Uri 中包含斜线。但不幸的是,这会破坏路由。

我已经设置了正确的路由,如果我有一个正常的字符串(例如“fubar”),它就可以很好地匹配。我试图传递编码的字符串 url,但这不起作用。显然问题是一些 http 系统层已经在解码字符串,这意味着不是 "fu%2fbar" 到达,而是 "fo/bar" - 这导致另一条路线.

此外,当我传递一个空字符串时,uri 是 "api//...",两个 / 被合并并且该段被丢弃。

解决内部 / 问题的一种方法是对 Uri 进行双重编码并在我的方法中对其进行解码。但这似乎是一个非常非常糟糕的选择,所以我正在寻找其他方法来解决这个问题。

最佳答案

对于斜线你可以准备特殊的路线

            "{controller}/{action}/{param1}/{param2}/{param3}"
"{controller}/{action}/{param1}/{param2}"
"{controller}/{action}/{param1}"


public ActionResult Index(string param1, string param2, string param3)
{
string param = string.Concat(param1, param2, param3);

这样,fu 和 bar 就是两个参数。

对空字符串没有任何解决方案。我会在客户端应用程序中用空格字符或其他表示“空”但不是

关于c# - 将字符串作为包含斜线或为空的 uri 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com