模型绑定在 webapi 2.0 中失败

Model binding fails in webapi 2.0

我正在使用 Webapi 2.0。我正在传递一个值为 vb/c4t+UuRLnQ2W/g8SQ== 的参数 在模型绑定之后,我在我的代码中得到 authId 的值为 vb/c4t UuRLnQ2W/g8SQ== (+ ) 符号被替换为 space。你能帮我看看我怎样才能得到它吗?

Url: api/employee/1234?authId=vb/c4t+UuRLnQ2W/g8SQ==

[HttpGet]
public IHttpActionResult Get(string eid, string authId)
{
}

+ 符号在查询字符串中具有不同的含义。它用来表示一个space。另一个在查询字符串中具有语义重要性的字符是 &,它用于分隔查询字符串中的各种 var=value 对。

大多数服务器端脚本会在使用查询参数之前对其进行解码,以便 + 正确转换为 space。现在,如果您希望在查询字符串中出现文字 +,则需要指定 %2B

示例yourString.replace("+","%2b")

替代方法:您应该 URLEncode 您的查询字符串值以确保您没有丢失内容。

另一种替代方法是为 + 符号创建您自己的代码。例如 12sfdhjsj8722nsn2232dfsdd 将代表 + 符号。所以你可以用代码替换 + 号,在你的服务器端你可以使用相同的代码取回它。