2017-04-03 4 views
2

Je suis en train d'éditer des fichiers F # Azure Function en utilisant VS Code et Ionide sur un Mac.Est-ce que createResponse est pris en charge dans System.Net.Http de Mono?

ci-dessous est ma petite fonction test:

#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  

Lorsque viewieng ce fichier dans le code VS, il y a une ligne rouge sous createResponse.

Lorsque je place ma souris sur createResponse, le message d'erreur est The field, constructor or member 'createResponse' is not defined.. Est-ce parce que la version System.Net.Http de Mono ne prend pas en charge createResponse?

Étant donné que je ne veux pas exécuter ou compiler ce fichier localement, est-il possible de dire à Ionide d'utiliser une autre version de System.Net.Http?

+0

C'est 'CreateResponse ', pas' createResponse'. Mauvaise capitalisation. –

+0

J'ai juste essayé 'CreateResponse' mais j'ai toujours le même message d'erreur. En outre, dans tous les exemples de fonction Azure dans F #, il utilise la version en minuscule. En d'autres termes, en utilisant 'createResponse', la fonction se compile et s'exécute sans problèmes sur les fonctions Azure. – Martimatix

+0

[Voici un exemple] (https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook#http-trigger-sample-in-c) que j'ai trouvé juste à présent. Il utilise PascalCase. Pouvez-vous me montrer des exemples utilisant camelCase? Êtes-vous sûr que le fichier 'Microsoft.Azure.WebJobs.Host.dll' existe à cet emplacement? Avez-vous essayé d'envoyer ce script à F # ligne par ligne interactive? –

Répondre

0

La méthode CreateResponse est une méthode d'extension - bien qu'elle existe dans l'espace de noms System.Net.Http, elle réside dans un assembly différent. (Je ne sais pas pourquoi il compile dans Azure, peut-être certains par défaut sont ajoutées des références supplémentaires?)

Pour faire Ionide heureux d'avoir ajouté ces forfaits NuGet:

Et ces références:

#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"