gpt4 book ai didi

.net - 我对 WebAPI 的发布操作的参数始终为空

转载 作者:行者123 更新时间:2023-12-04 18:15:37 28 4
gpt4 key购买 nike

我有一个 F# WebAPI 项目,由于某种原因,Post 方法的参数始终设置为 null。

(名字都是匿名的)

这是 Controller :

type TestController() =
inherit ApiController()
member x.Get () =
getValues ()

member x.Post ([<FromBody>] values: Values) =
storeValues values

记录是这样的 Values定义为:
type TypeA = {
Id: string
....
}

....

type Values = {
AValues: list<TypeA>
BValues: list<TypeB>
CValues: list<TypeC>
}

在我看来,我对 API 进行 POST 调用,如下所示:
        return $.ajax({
type: "POST",
url: url,
data: JSON.stringify(params),
contentType: "application/json",
beforeSend: function (jqXHR) { jqXHR.setRequestHeader("X-HTTP-Method", type); }
});

在哪里 data出来:
{
"AValues":[{"Id":"blahblah", ....}],
"BValues":[...],
"CValues":[...]
}

我更新了 JS 以制作 data评估为:
{
"Values":
{
"AValues":[{"Id":"blahblah", ....}],
"BValues":[...],
"CValues":[...]
}
}

现在调试器抛出一个空引用异常并说请求为空(断点在我的记录定义上)。

问题是它确实命中了 Controller 中的 Post 方法,但是 values始终设置为空。

最佳答案

我将问题转发给 Ryan Riley谁对 F# 和 Web API 都有期望,他说如下:

You can't use records with the default model binder, even if you made the members mutable, because records don't have default constructors. F# 3.0 introduces a CLIMutableAttribute [1] that will allow records to be used this way.

[1] http://blogs.msdn.com/b/fsharpteam/archive/2012/07/19/more-about-fsharp-3.0-language-features.aspx

关于.net - 我对 WebAPI 的发布操作的参数始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11785394/

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