在 Azure 隔离功能中返回 40x 响应

问题描述 投票:0回答:0

我有一个与this StackOverflow 问题非常相似的问题。我有以下 .net 6.0 隔离功能。当我在邮递员中调用它时,我可以看到 catch 语句正在执行,但响应始终是 200。

[Function("Enquiry")]
        public async Task<HttpResponseData> Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req)
        {
            try
            {
                var a = new ErrorResponseModel
                {
                    ErrorType = ErrorResponseTypeEnum.ModelValidation
                };

                a.ErrorMessages.Add("This is a test");

                throw new InvalidModelException(a);
            }
            catch (InvalidModelException inv)
            {
                
                var res = req.CreateResponse();
                res.StatusCode = HttpStatusCode.BadRequest;                
                await res.WriteAsJsonAsync(inv.ErrorResponseModel);

                return res;
            }
}

MS 文档中没有任何内容表明

req.CreateResponse();
应该只具有
20x
响应。我不想像上面的 StackOverflow 链接一样使用
ActionResult
,因为我在 MS 文档中找不到任何内容说明
ActionResult
是受支持的返回类型。实际上在MS官方文档中。看起来
IActionResult
对象仍在预览中。

已按要求更新信息,

ErrorResponseModel

[DataContract]
    public class ErrorResponseModel
    {
        [DataMember]
        [JsonConverter(typeof(StringEnumConverter))]
        public ErrorResponseTypeEnum ErrorType { get; set; }

        [DataMember]
        public List<string> ErrorMessages { get; set; }

        public ErrorResponseModel() => ErrorMessages = new List<string>();

    }

    public enum ErrorResponseTypeEnum { ModelValidation, MissingParameter, FileLocked }

InvalidModelException

public class InvalidModelException : Exception
    {
        private readonly ErrorResponseModel _errorResponseModel;

        public ErrorResponseModel ErrorResponseModel => _errorResponseModel;

        public InvalidModelException(ErrorResponseModel errorResponseModel) 
        {
            _errorResponseModel = errorResponseModel;
        }
    }
c# azure azure-functions response
© www.soinside.com 2019 - 2024. All rights reserved.