2017-12-02 9 views
0

Azure関数の新機能私はVS 2017 15.4を使用しており、ローカルでhelloworld関数を実行しています。私はこの機能の要求を得ることができましたが、私はそれが与える同じURI上の投稿を実行するとき。Azure関数のポスト発行

mscorlib:関数実行中の例外:HelloWorld。 System.Net.Http.Formatting:MediaTypeFormatterは、 'application/octet-stream'というメディアタイプのコンテンツから 'Object'タイプのオブジェクトを読み取ることはできません。

大胆な行がポストリクエストで問題を起こしていることを忘れてしまったことを教えてください。私はcontentTypeを試してみました。身体と身体なし。

私はどのように青い関数の要求ボディでJsonオブジェクトを解析できますか? 1つの方法は、それを文字列で解析してjsonconvertを使用して逆シリアル化することでした。 valueprovidersのmodelbindersなどこれはapplication/jsonに設定されている、あなたのHTTP要求にContent-Typeヘッダを想定して動作するはず

[FunctionName("HelloWorld")] 
public static async Task 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); 
    }. 

答えて

0

ようにそれをやって彼らの任意のより良い方法です。

ヘッダーの値がmultipart/form-dataの場合、これはhereと記載されている既知のバグです。

+0

私にはうまくいきましたが、クラスに私のjsonを解析する方法があります。文字列で解析してからjsonconvert.deserializeを使用して逆シリアル化を試みました。自動的に行うことができます。 – Rakesh

+0

'SampleType'型のクラスを持っている場合、' req.Content.ReadAsAsync () 'を' req.Content.ReadAsAsync () 'に変更すると動作します。 –

0

Connor氏によると、Content-Typeヘッダがapplication/jsonに設定されている限り、このコードは正常に機能します。私が実行した問題は、Azureのポータルで紺色関数をテストするときにヘッダを追加する機能がこの場合には機能していないように見えるということです。

晴れた関数のテストセクションの外から関数にリクエストを送ることができればうまくいくはずです。

関連する問題