programing

Azure 함수가 ILogger를 바인딩하지 못함

i4 2023. 5. 1. 19:58
반응형

Azure 함수가 ILogger를 바인딩하지 못함

제 기능은 Microsoft를 참조하는 어셈블리를 참조하는 것입니다.내선 번호.로깅.추상화 2.0.0.함수의 어셈블리에 해당 버전에 대한 뉘트 참조를 추가하면 다음 오류가 발생하여 함수 실행이 실패합니다.

[1/25/2018 11:14:46 PM] Microsoft.애저, 웹잡스호스트: 인덱싱 메서드 'TrainingFunction' 오류가 발생했습니다.달려라, 마이크로소프트애저, 웹잡스호스트: 'log' 매개 변수를 ILogger 유형에 바인딩할 수 없습니다.매개 변수 유형이 바인딩에서 지원되는지 확인합니다.바인딩 확장(예: ServiceBus, Timers 등)을 사용하는 경우 시작 코드(예: 구성)에서 확장에 대한 등록 방법을 호출했는지 확인합니다.서비스 버스(), 구성을 사용합니다.타이머( 등)를 사용합니다.

Azure 기능에서 새로운 로거를 사용할 수 있습니까? (SDK 1.0.7)

SDK는 ILogger 어셈블리의 버전 X에 바인딩되어 있고 사용자 코드는 버전 Y에 바인딩되어 있습니다.그런 다음 바인딩 엔진은 매개 변수 유형이 서로 다른 어셈블리에서 왔기 때문에 매개 변수 유형을 동일한 것으로 인식하지 못합니다.(다른 유형에서도 발생할 수 있습니다.)

일반적으로 해결 방법은 다음과 같습니다.

  1. SDK에서 사용하는 너겟 참조 보기
  2. 이러한 기존 참조를 사용하고 다른 버전의 동일한 dll을 추가하지 마십시오.

저도 왠지 같은 오류를 겪고 있었지만, 그것은 마이크로소프트를 위한 패키지 버전이었습니다.엔티티 프레임워크 코어입니다.문제의 원인이 되는 SqlServer입니다.

Microsoft 다운그레이드 중입니다.엔티티 프레임워크 코어입니다.SqlServer v2.2.0에서 v2.1.4로 변경되었습니다.

이 패키지에 대한 logging.abstractions 라이브러리 간에 버전 불일치가 있는 것 같습니다.

는 제 에서 Azure Functions 이었습니다..csprojjava.

추가했습니다.<AzureFunctionsVersion>v2</AzureFunctionsVersion><TargetFramework>요소:

<PropertyGroup>
   <TargetFramework>netstandard2.0</TargetFramework>
   <AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>

누군가에게 도움이 되길 바랍니다 :-)

또한 바인딩 순서로 인해 이 오류가 발생할 수 있습니다.

매개 변수 순서에서 변경하는 중...

     [FunctionName("SomeFunction")]
     public static async Task Run([BlobTrigger("path", Connection = "conn")]
        ILogger logger, ExecutionContext context, Stream stream, string name) {}

…에게

     [FunctionName("SomeFunction")]
     public static async Task Run([BlobTrigger("path", Connection = "conn")]
        Stream stream, string name, ILogger logger, ExecutionContext context) {}

제 문제를 해결했습니다.(Microsoft.NET.Sdk.함수 v1.0.24)

저는 NuGet 패키지 Microsoft를 사용했습니다.내선 번호.내 Azure 함수에서 참조하는 프로젝트에 로그온하는 중입니다.이 패키지를 제거하고 오류(정확한 오류)가 사라졌습니다.나는 사실 내 Azure 기능에서 ILogger를 사용하기 위해 NuGet 패키지가 필요하지 않았습니다.

 [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)

편집: 또한 Microsoft로 다운그레이드합니다.내선 번호.Http 2.1.0은 이 오류의 또 다른 발생에 대해 작동했습니다.IHTTPClientFactory 등의 확장 패키지가 여전히 필요한 경우 SDK 버전이 3.1.1과 충돌하기 때문에 이 로깅 오류가 발생할 수 있습니다.

MS 직원 중 한 명이 언급한 바와 같이 다음과 같은 원인이 될 수 있습니다.

우리는 아직 지지하지 않습니다.NET Core 2.2, 하지만 우리는 작업이 진행 중이고 1월에 선적해야 합니다.

https://github.com/Azure/azure-functions-host/issues/3854#issuecomment-449034719

같은 오류가 발생한 또 다른 이유는...

어찌된 일인지, 저는 그들이 그들의 관점에서Microsoft.Build.Framework 이 은 유한버의전 ILogger로 입니다.Microsoft.Extensions.Logging하고 있는 입니다.

이 문제는 Azure Functions/Durable Functions를 v2에서 v3로 업데이트할 때도 발생합니다.ILogger 참조 문제를 해결하려면 .csproj를 수동으로 편집해야 합니다.

<PropertyGroup>
  <TargetFramework>netcoreapp3.1</TargetFramework>
  <AzureFunctionsVersion>v3</AzureFunctionsVersion>   
</PropertyGroup>
<ItemGroup>
    ...
   <PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.2" />
</ItemGroup>

이 기능은 런타임 모듈 오류를 계속 보고합니다.그런 다음 Visual Studio에서 새로운 Azure Function v3 프로젝트를 생성하여 런타임 모듈용 템플릿을 다운로드해야 합니다.절차에 대한 자세한 내용은 공식 문서: Azure Functions 런타임 버전 개요에서 제공됩니다.

Microsoft를 제거해야 했습니다.내선 번호.솔루션에서 nuget 패키지를 로깅하고 있습니다.

Nuget 패키지를 자동 업데이트한 후 갑자기 ILogger 바인딩 오류가 발생했습니다.

솔루션 파일에서 ILogger 확장에 대한 명시적인 참조를 찾을 수 없습니다.범인은 다른 확장자인 마이크로소프트인 것으로 드러났습니다.내선 번호.캐싱.v5.00(.)으로 업데이트된 메모리NET 5?).해당 패키지를 이전 버전 3.1.15로 다운그레이드하면 오류가 해결되었습니다(원래는 v3.1.4였습니다).v5.x 확장 패키지가 이 문제를 유발하는지 궁금합니다.

저에게 효과가 있었던 것은 "Microsoft"를 다운그레이드 한 것입니다.내선 번호.버전 5.x.x.x에서 "3.1.20"으로 "Microsoft"를 암시적으로 다운그레이드합니다.내선 번호.로깅"에서 "3.1.20"으로

Http 라이브러리 버전 5.x와 "Microsoft"에는 암묵적인 종속성이 있는 것 같습니다.내선 번호.로깅" 버전 5.x 및 해당 버전의 로깅에 문제가 있습니다.

언급URL : https://stackoverflow.com/questions/48453482/azure-function-fails-to-bind-ilogger

반응형