POSTとGETの両方でWebAPI非同期を呼び出すMVCアプリケーションがあります。 WebAPIとMVCの両方のアプリケーションをローカルで実行すると、WebAPIの応答は正常に表示されますが、SendAsync要求は500を返します。また、FiddlerはAPI呼び出しを表示しません。私はそれが非同期要求がどのように処理されているのかとの疑問を持っていますが、私は何が欠けているのか分かりません。 APIへWebAPIは200を返しますが、SendAsync呼び出しは500を示します
MVCコントローラのコール:
public Model UploadFile(Model formCollection)
{
var documentModel = formCollection.ToString();
var client = new HttpClient();
var uri = new Uri(BaseUri + "document/");
var content = new StringContent(documentModel);
var request = new HttpRequestMessage(HttpMethod.Post, uri) {Content = content};
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = client.SendAsync(request);
response.Wait();
try
{
var returned = response.Result;
if (returned.StatusCode != HttpStatusCode.OK)
{
throw new Exception(returned.RequestMessage.ToString());
}
var model = JsonConvert.DeserializeObject<Model> (returned.Content.ReadAsStringAsync().Result);
model.FileContents = "";
return model;
}
catch(Exception e)
{
var error = new Exception("Service failure - ", e);
throw error;
}
}
WebAPIのポスト:
[HttpPost]
public async Task<HttpResponseMessage> Post([FromBody]Model model)
{
var response = await SubmitNew(model);
return Request.CreateResponse(response);
}
ポストで返却にブレークポイントを設定するには、有効な応答を示すが、response.Result中に私はさらに、以下のようなレスポンスに関係なく、OKリクエストを返そうとしました:
return Request.CreateResponse(HttpStatusCode.OK, result);
クライアントが500を表示している理由に関するアイデアはありますか?
ラップvar response = client.SendAsync(request); try-catchブロックで例外を参照してください。 – Daniel
エラー500は、WebAPIで何かが正しく設定されていないことを意味します。 WebAPIの簡単なメソッドで、APIが動作していることを確認するのに役立つテスト方法がありますか? – Dalorzo
この呼び出しを行うにはPOSTMAN/Advanced restクライアントを使用してください。 – Shyju