Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dotnet核心Web API无意中摆脱了倒退_C#_Json_Asp.net Core_.net Core - Fatal编程技术网

C# Dotnet核心Web API无意中摆脱了倒退

C# Dotnet核心Web API无意中摆脱了倒退,c#,json,asp.net-core,.net-core,C#,Json,Asp.net Core,.net Core,我有一个端点,它接受currentPassword、newPassword和newPasswordConfirmation的json数据 我遇到了一个问题,因为我想接受密码中的文字反斜杠(\),它们必须被传入,但它们通过Web API验证被转义 我想我在C#类中缺少so属性,但我还没有找到它 请求: 答复: 模型I反序列化为: 如果接受密码中的文字反斜杠(\),则需要使用 \\ (Backslash character) 其他特殊性质 \b Backspace (ascii code 08

我有一个端点,它接受
currentPassword
newPassword
newPasswordConfirmation
的json数据

我遇到了一个问题,因为我想接受密码中的文字反斜杠(
\
),它们必须被传入,但它们通过Web API验证被转义

我想我在C#类中缺少so属性,但我还没有找到它

请求:

答复:

模型I反序列化为:


如果接受密码中的文字反斜杠(\),则需要使用

\\  (Backslash character)
其他特殊性质

\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
然后bakend可以接收双反斜杠,因为反斜杠的特殊性,它必须成对出现。数据库中的反斜杠可以在变成字符串后直接进行比较


另一种方法是将数据放入formdata,它可以将所有字符序列化

public IActionResult change([FromForm]ChangePasswordModel changePasswordModel)
    {
        //...
        return Ok(changePasswordModel);
    }

因此,在发送json之前,所有API使用者都必须将\替换为\\with?这对我来说不是一个好的解决方案。@Max,除此之外,一个反斜杠不符合w3c协议。@Max,另一种方法是将formdata发送到bakend。@Max:你的意思是你想要的东西有点像JSON,但实际上不是JSON。您当前发送的不是有效的JSON。任何使用JSON库的客户端都不会有此问题。@Max:如果客户端发送的是有效的JSON,则不会有问题。但curl请求中显示的反斜杠后跟h是无效的JSON。如果您可以显示客户机实际发送的JSON,而不是curl请求,那么将更容易帮助您。。。现在感觉你只是被一个不合适的卷发要求误导了。如果您想在JSON文本中的字符串中表示反斜杠,就需要对其进行转义——就这么简单。(但客户机不需要手动执行此操作,除非它手动创建JSON。)
\\  (Backslash character)
\b  Backspace (ascii code 08)
\f  Form feed (ascii code 0C)
\n  New line
\r  Carriage return
\t  Tab
\"  Double quote
public IActionResult change([FromForm]ChangePasswordModel changePasswordModel)
    {
        //...
        return Ok(changePasswordModel);
    }