2017-04-03 3 views
2

Mac에서는 VS 코드와 Ionide를 사용하여 F # Azure 함수 파일을 편집하고 있습니다.CreateResponse는 Mono의 System.Net.Http에서 지원됩니까?

#if !COMPILED 
#I "../packages/Microsoft.Azure.WebJobs/lib/net45/" 
#r "Microsoft.Azure.WebJobs.Host.dll" 
#endif 

#r "System.Net.Http" 
#r "Microsoft.WindowsAzure.Storage" 
#r "Newtonsoft.Json" 

open System 
open System.Net 
open System.Net.Http 
open Microsoft.Azure.WebJobs.Host 

type Item = { id: string; comment: string } 

let Run(req: HttpRequestMessage, output: byref<Item>, log: TraceWriter) = 
    let item = { id = "Some ID"; comment = "test comment" } 
    output <- item 
    async { 
     // createResponse has a red line beneath it 
     return req.createResponse(HttpStatusCode.Created) 
    } |> Async.StartAsTask  

VS 코드에서이 파일을 viewieng, createResponse 아래에 빨간 선이 :

다음은 내 작은 테스트 기능입니다.

createResponse 위에 마우스를 올려 놓으면 오류 메시지는 The field, constructor or member 'createResponse' is not defined.입니다. Mono의 System.Net.Http 버전이 createResponse을 지원하지 않기 때문입니까?

이 파일을 로컬로 실행하거나 컴파일하고 싶지 않다면, 어쨌든 Ionide에게 System.Net.Http의 다른 버전을 사용하도록 말할 것입니까?

+0

입니다 ','createResponse'가 아닙니다. 잘못된 대문자. –

+0

'CreateResponse'를 시도했지만 여전히 같은 오류 메시지가 나타납니다. 또한 F #의 모든 Azure 함수 예제에서 소문자 버전을 사용하고 있습니다. 즉,'createResponse'를 사용하면 Azure 함수에 아무런 문제없이 컴파일되고 실행됩니다. – Martimatix

+0

[여기에 예제가 있습니다] (https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook#http-trigger-sample-in-c) 그냥 발견했습니다. 지금. PascalCase를 사용합니다. 낙타 사례를 사용하여 예제를 가르쳐 주시겠습니까? 해당 위치에'Microsoft.Azure.WebJobs.Host.dll' 파일이 있는지 확인하십시오? 이 스크립트를 F # 대화식으로 한 줄씩 보내려고 했습니까? –

답변

0

CreateResponse 메서드는 확장 메서드이며 다른 어셈블리에있는 System.Net.Http 네임 스페이스에 있지만이 메서드는 확장 메서드입니다. (나는 푸른에서 컴파일 이유는, 어쩌면 몇 가지 추가 참조가 기본적으로 추가되어 있는지 모르겠어요?)

내가이 nuget 패키지 추가 Ionide 행복하려면 :

그리고 이러한 참조 : 그것은`CreateResponse이

#I ".." 
#r "packages/System.Net.Http.Formatting.Extension/lib/System.Net.Http.Formatting.dll" 
#r "packages/Microsoft.AspNet.WebApi.Core/lib/net45/System.Web.Http.dll" 
관련 문제