gpt4 book ai didi

c# - 将数组发布到 Azure Function HTTP 触发器返回 500 状态代码

转载 作者:可可西里 更新时间:2023-11-01 16:59:44 25 4
gpt4 key购买 nike

我有一个非常简单的 Azure HTTP 触发函数,它接收带有数据的 POST:

{
"symbols": ["Azure1", "Azure2", "Azure3"]
}

我的 Azure 函数是:

#r "Newtonsoft.Json"
using System.Net;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");

// parse query parameter
string symbols = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "symbol", true) == 0)
.Value;

// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();

// Set name to query string or body data
symbols = symbols ?? data?.symbols;

return symbols == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, symbols, JsonMediaTypeFormatter.DefaultMediaType);
}

但是,我收到带有错误消息的 500 响应:无法将类型“Newtonsoft.Json.Linq.JArray”隐式转换为“字符串”。存在显式转换(是否缺少强制转换?)。

有没有人看到我可能哪里出错了?我的期望是函数响应是:

["Azure1", "Azure2", "Azure3"]

最佳答案

这个错误是有道理的。您将 symbols 声明为 string,但稍后将 data?.symbols 分配给它,这是一个数组。因此消息 Cannot implicitly convert type 'Newtonsoft.Json.Linq.JArray' to 'string'

除非您想支持通过查询字符串传递数据,否则您应该摆脱该查询字符串逻辑。例如试试这个:

#r "Newtonsoft.Json"
using System.Net;
using System.Net.Http;
using System.Net.Http.Formatting;
using Newtonsoft.Json.Linq;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
dynamic data = await req.Content.ReadAsAsync<object>();
JArray symbols = data?.symbols;

return symbols == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass symbols in the body")
: req.CreateResponse(HttpStatusCode.OK, symbols, JsonMediaTypeFormatter.DefaultMediaType);
}

关于c# - 将数组发布到 Azure Function HTTP 触发器返回 500 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523165/

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