2017-04-08 4 views
2

Azure 함수를 사용할 때 System.Net.Http 라이브러리에 많은 문제가 있습니다. 포털에 새로운 httptrigger 함수를 만들면 올바르게 작동합니다. 그러나 내 자신의 precompiled assembly을 사용하고 싶습니다. 내가이 일을 할 때 나는 모든 종류의 문제를 겪는다.Azure 함수 - System.Net.Http

내가보기에 하나의 증상은 전달 된 HttpRequestMessage에 세부 사항이 없다는 것입니다. RequestUri은 비어 있으며 다른 속성 중 하나가 추가됩니다 (예 : 헤더 등. 매개 변수가 null이 아니라는 점에 유의하십시오. - 아무 것도 채워지지 않은 것처럼 보입니다.

<Project Sdk="Microsoft.NET.Sdk"> 
    <PropertyGroup> 
    <TargetFramework>net46</TargetFramework> 
    </PropertyGroup> 

    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" /> 
    <PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="2.0.0" /> 
    </ItemGroup> 

    <ItemGroup> 
    <ProjectReference Include="..\MyOtherAssembly\MyOtherAssembly.csproj" /> 
    </ItemGroup> 
</Project> 

Microsoft.AspNet.WebApi.Core nuget 패키지는 system.net.http 포함

다음
Exception while executing function: Functions.WebHookSync. mscorlib: Exception has been thrown by the target of an invocation. MyFunctionName.Functions: Method not found: 'System.Collections.Generic.IEnumerable`1<System.Collections.Generic.KeyValuePair`2<System.String,System.String>> System.Net.Http.HttpRequestMessageExtensions.GetQueryNameValuePairs(System.Net.Http.HttpRequestMessage)'. 

내 .csproj 파일의 내용입니다 :

또 다른 증상은 GetQueryNameValuePairs를 호출 할 때,이 말을 실패이다 라이브러리. 나는 이것과 관련된 여러가지 다른 너겟 패키지의 다양한 조합을 시도해 보았습니다. 그러나 운이 없었습니다.

누구나 내가이 기능을 작동시키기 위해 어떤 패키지를 사용해야하는지 알고 있습니까?

답변

1

System.Net.Http의 MissingMethodExceptions에 문제가 있습니다. 나를 위해 일한 것은 다음과 같은 참조였습니다 :

<package id="System.Net.Http" version="4.0.0" targetFramework="net461" /> 
+0

이것은 이제 작동하는 것 같습니다. 불행히도 GetQueryNameValuePairs 메서드가 포함되어 있지 않으므로 정규식을 사용하여 쿼리 문자열을 구문 분석합니다. 또한 다른 모든 라이브러리를 46 (.net 코어)에서 다운 그레이드해야만 체인 종속성 오류가 발생했습니다. 아마 Azure 함수는 곧 .NET Core (https://github.com/Azure/Azure-Functions/issues/98)를 지원할 것입니다. – Dan

1

함수 런타임에 System.Net.Http references입니다.

미리 컴파일 된 프로젝트에 직접 추가하는 방법을 추가하는 것이 좋습니다.

다음은 시도 할 http 트리거가있는 미리 컴파일 된 함수 샘플입니다 (1, 2).