gpt4 book ai didi

c# - 如何从 Azure 函数返回 AcceptedAtRouteResult?

转载 作者:行者123 更新时间:2023-11-30 18:12:23 26 4
gpt4 key购买 nike

从 Azure 函数返回 AcceptedAtRouteResult 时,我不断收到未处理主机错误。

我希望能够从 Azure 函数返回 AcceptedAtRouteResult 来告诉调用者任何省略的查询字符串参数的默认值,但我不断收到未处理的主机错误。

我的目标是 .net Standard 2.0.3 并使用 Microsoft.NET.Sdk.Functions 1.0.26

[FunctionName("AcceptedAtRouteResult")]
public static IActionResult AcceptedAtRouteResult(
[HttpTrigger("GET")]HttpRequest req)
{
// read query parameter if present else set to defualt value

var rs = new AcceptedAtRouteResult(
"acceptedatrouteresult",
new { someParameter = "value" },
new { Result = "1" });

return rs;
}

我不断遇到异常:

An unhandled host error has occurred. System.Private.CoreLib: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index.

最佳答案

产品团队建议使用以下类来替换 AcceptedAtRouteResult 返回类型,直到错误得到纠正:

class AcceptedObjectResult : ObjectResult
{
private readonly string _location;

public AcceptedObjectResult(string location, object value) : base(value)
{
_location = location;
}

public override Task ExecuteResultAsync(ActionContext context)
{
context.HttpContext.Response.StatusCode = 202;
var uri = new UriBuilder(context.HttpContext.Request.Scheme, context.HttpContext.Request.Host.Host)
{
Path = $@"api/{_location}",
};
if (context.HttpContext.Request.Host.Port.HasValue)
{
uri.Port = context.HttpContext.Request.Host.Port.Value;
}

context.HttpContext.Response.Headers.Add(@"Location", uri.ToString());

return base.ExecuteResultAsync(context);
}
}

可以在 Github 上跟踪错误单:https://github.com/Azure/azure-functions-host/issues/4267

关于c# - 如何从 Azure 函数返回 AcceptedAtRouteResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55453819/

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