J'essaie les applications Azure Function.Comment faire pour résoudre le comportement de l'application de fonction Flaky Azure?
La première suite à l'exemple d'un tutoriel avec Open Weather Map, a cessé de fonctionner après avoir utilisé log.WriteLine()
, qui a correctement jeté une erreur de compilation. J'ai changé à log.Info()
et il a continué à se plaindre environ TraceWriter
ne contenant pas une définition pour WriteLine
.
Après une longue session de dépannage, j'ai créé une nouvelle fonction, en copiant tout le contenu de la cassée, et cela a fonctionné immédiatement.
créé une nouvelle fonction, comme avant, et a commencé à apporter des modifications à la méthode Run()
, et l'exécution de ce rendement de la fonction:
« La ressource que vous recherchez a été supprimée, son nom changé, ou est temporairement indisponible. "
Ayant à l'esprit, l'URL de fonction est basée sur la clé par défaut Azure génère lorsque la fonction est créée: https: //.azurewebsites.net/api/WeatherWhereYouAre code = my1really2RAndom3defauLT4Key5from6Azure ==
Créé? encore une autre fonction, sans modification de la valeur par défaut « Bonjour Azure » échantillon, et il donne une erreur 500 avec:
« Exception en exécution de la fonction:. Functions.HttpTriggerCSharp2 -> une ou plusieurs erreurs se sont produites -> Paramètre de liaison d'exception 'req' -> La chaîne d'entrée n'était pas dans un format correct. "
Ceci est le contenu du fichier project.json:
{
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.IdentityModel.Clients.ActiveDirectory": "3.16.0",
"Microsoft.Azure.KeyVault": "2.3.2",
"Microsoft.AspNet.WebApi.Client": "5.2.3"
}
}
}
}
Et le run.csx:
using System.Net;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
// Set name to query string or body data
name = name ?? data?.name;
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
}
EDIT
Dans l'image ci-dessus , notez que ceci est httpTriggerFSharp1, mais l'exception est Ht tpTriggerCSharp2 (qui est le seul qui fonctionne!)
Y at-il un moyen que je peux correctement résoudre ces problèmes?
Parfois, vous devez redémarrer manuellement les applications de fonction après le déploiement, pour qu'il recharge correctement les nouveaux binaires. C'est vraiment énervant, et on dirait que vous expérimentez la même chose. –