Azure函数dotnet隔离进程(DotnetWorker)异常



在实现POST方法时,我得到了以下异常

[2022-06-17T07:14:41.723Z] Executed 'Functions.AuthenticateHttpTrigger' (Failed, Id=12bb7c91-4030-4090-a2fe-ec205702c662, Duration=424954ms)
[2022-06-17T07:14:41.726Z] System.Private.CoreLib: Exception while executing function: Functions.AuthenticateHttpTrigger. System.Private.CoreLib: Result: Failure
Exception: System.InvalidOperationException: Duplicate binding call detected. Input parameters can only be bound to arguments once. Use the InputArguments property to inspect values.
[2022-06-17T07:14:41.727Z]    at Microsoft.Azure.Functions.Worker.Context.Features.DefaultModelBindingFeature.BindFunctionInput(FunctionContext context) in D:a1ssrcDotNetWorker.CoreContextFeaturesDefaultModelBindingFeature.cs:line 29
[2022-06-17T07:14:41.728Z]    at Microsoft.Azure.Functions.Worker.Invocation.DefaultFunctionExecutor.ExecuteAsync(FunctionContext context) in D:a1ssrcDotNetWorker.CoreInvocationDefaultFunctionExecutor.cs:line 37
[2022-06-17T07:14:41.729Z]    at Microsoft.Azure.Functions.Worker.OutputBindings.OutputBindingsMiddleware.Invoke(FunctionContext context, FunctionExecutionDelegate next) in D:a1ssrcDotNetWorker.CoreOutputBindingsOutputBindingsMiddleware.cs:line 13

你遇到过这样的问题吗?请建议。

提前感谢。

============================================

编辑这是我的函数定义

[AllowAnonymous]
[Function(nameof(AuthenticateHttpTrigger))]
[OpenApiOperation(operationId: nameof(AuthenticateHttpTrigger), Description = "Authenticate")]
[OpenApiRequestBody(contentType: Constants.CommonResponseContentType, bodyType: typeof(AuthenticationRequest))]
[OpenApiResponseWithBody(statusCode: HttpStatusCode.OK, contentType: Constants.CommonResponseContentType, bodyType: typeof(AuthenticationResponse), Description = "The OK response")]
public async Task<HttpResponseData> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "authenticate")] HttpRequestData req, FunctionContext executionContext)
{
try
{
_logTrace.Add(LogLevel.Info, $"{nameof(AuthenticateHttpTrigger)} - AUTHENTICATE START", new { });
var requestUser = executionContext.Features.Get<JwtPrincipalFeature>()?.User;
var requestData = await req.GetBodyAsync<AuthenticationRequest>();
var addUserCommand = new AuthenticateCommand
{
RequestUser = requestUser,
Data = requestData,
LogTrace = _logTrace
};
return await _httpFunctionExecutor.ExecuteAsync(async () =>
{
var result = await _mediator.Send(addUserCommand);
_logTrace.Add(LogLevel.Info, $"{nameof(AuthenticateHttpTrigger)} - AUTHENTICATE END ", new { result });
return result.Success
? CreateResponse(HttpStatusCode.OK, req, result.Data)
: CreateResponse(HttpStatusCode.UnprocessableEntity, req, null);
}, req);
}
catch (Exception e)
{
_logTrace.AddError(e);
return CreateResponse(HttpStatusCode.UnprocessableEntity, req, null);
}
finally
{
_logTrace.Flush();
}
}

System.Private。CoreLib:在执行函数时出现异常:Functions.AuthenticateHttpTrigger。System.Private.CoreLib: Result: Failure例外:系统。InvalidOperationException:检测到重复绑定调用。输入参数只能绑定到实参一次。使用inpuarguments属性来检查值。

错误信息显示在函数执行中输入参数重复。你必须避免重复inpuargument应该在执行函数时绑定一次。

我希望你通过使用GetCustomAttribute来修复相同的方式。

if(targetMethod?.GetCustomAttribute(typeof(AllowAnonymousAttribute), false) is AllowAnonymousAttribute) 
{ 
await next(context); return; 
}

参考博客获取更多信息

最新更新