2017-10-09 18 views
2

Visual Studio 2017 15.3がインストールされており、Azure Developmentワークロードがインストールされています。HttpトリガーAzure関数のデバッグVS 2017

私はこの記事によると、ブランクHttpTriggerを作成しました:

http://www.c-sharpcorner.com/article/getting-started-with-microsoft-azure-functions-using-visual-studio-2017/

を私はパラメータクエリ文字列としてNameを使用する場合、私が正常にデバッグすることができます。私はこのPOSTリクエストを作成するために郵便配達を使用している場合

はしかし、:

{ 
    "name": "Azure" 
} 

を私は次のエラーを取得する:ここで

"mscorlib: Exception while executing function: HttpTrigger . Anonymously Hosted DynamicMethods Assembly: 'Newtonsoft.Json.Linq.JObject' doe s not contain a definition for 'name'."

は、Visual Studio 2017での機能のアプリのために私のコードです:

using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Threading.Tasks; 
using Newtonsoft.Json; 
using Newtonsoft.Json.Linq; 
using Microsoft.Azure.WebJobs; 
using Microsoft.Azure.WebJobs.Extensions.Http; 
using Microsoft.Azure.WebJobs.Host; 

namespace VS2017TestFunctionApp 
{ 
    public static class HttpTrigger 
    { 
     [FunctionName("HttpTrigger")] 
     public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]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); 
     } 
    } 
} 

また、実行関数内で全く同じコードをコピーし、同じテストポストをaf Azureのポータルを介してすべての正常に動作します。

enter image description here

答えて

0

私はあなたのコードとAzureの機能のアプリを作成して、私の側に正常に動作しますポストマンを使用して要求を送信します。

リクエストとレスポンス

enter image description here

リクエストボディ:取得リクエストボディにブレークポイントは次のようにヒットすることができ

enter image description here

を期待

enter image description here

編集:

私はエラーなしdataからnameを抽出することができます。

enter image description here

+0

あなたは「名前」に、あなたのブレークポイントから次の行に移動する場合は、エラーを取得する必要があります。 – Stanza

+0

また、Run関数内で全く同じコードをコピーし、同じテストポストをAzureポータル経由で関数アプリケーションで使用すると、すべて正常に動作します。 – Stanza

+0

''あなたがブレークポイントから '名前'に次の行に移動すると、エラーが発生するはずです.''私はエラーを取得しません。コードは正常に動作します。 –

関連する問題