小编Bri*_*ian的帖子

C# asp.net 将具有 long 属性的对象传递给前端会更改其值

我正在构建一个带有react.js前端(尽管我相当确定这与问题无关)和asp.net后端(针对net5.0,不确定是否相关)的应用程序。当我调用后端 API 时,我会返回一个对象,其中部分包含它根据传入的数据生成的 ID,该 ID 的类型为 C# 中的 long(64 位 int)。我看到的行为是 C# 中的变量和从前端响应中读取的变量是不同的。它们似乎在大约 16-17 位数字后发生漂移。

这是预期的吗?有什么办法可以绕过它吗?

重现代码/我所看到的图片:

C#

[HttpPost]
[Route("test")]
public object TestPassingLongInObject()
{
    /* actual logic omitted for brevity */

    var rv = new
    {
        DataReadIn = new { /* omitted */ },
        ValidationResult = new ValidationResult(),
        GeneratedID =  long.Parse($"922337203{new Random().Next(int.MaxValue):0000000000}") // close to long.MaxValue
    };

    Console.WriteLine($"ID in C# controller method: {rv.GeneratedID}");

    return rv;
}
Run Code Online (Sandbox Code Playgroud)

控制台输出:ID in C# controller method: 9223372030653055062

Chrome 开发工具:

Chrome 开发工具看到的响应

当我尝试访问前端的 ID 时,我得到以 000 而不是 …

c# asp.net asp.net-core .net-5

5
推荐指数
1
解决办法
1055
查看次数

为 ASP.NET Core 中的所有响应添加属性

我有一个具有多个端点的 API。我想向所有端点响应添加一个属性,而不是将其单独添加到每个端点响应模型。

前任:

public class MyClass
{
    public string MyProperty { get; set; } = "Hello";
}

public class MyOtherClass
{
    public string MyOtherProperty { get; set; } = "World";
}

public class MyController : ControllerBase
{
    [HttpPost]
    public async Task<ActionResult<MyClass>> EndpointOne(POSTData data)
    {
        // implementation omitted
    }

    [HttpPost]
    public async Task<ActionResult<MyOtherClass>> EndpointTwo(POSTOtherData otherData)
    {
        // implementation omitted
    }
}
Run Code Online (Sandbox Code Playgroud)

MyClass调用任一端点会返回或 的JSON 表示形式MyOtherClass- 即

{ "MyProperty":"Hello" } or { "MyOtherProperty":"World" }
Run Code Online (Sandbox Code Playgroud)

我想ApiName向 API 中的所有端点添加一个属性(例如 string …

c# asp.net-core

4
推荐指数
2
解决办法
1567
查看次数

标签 统计

asp.net-core ×2

c# ×2

.net-5 ×1

asp.net ×1