POST と GET の両方で WebAPI 非同期を呼び出す MVC アプリケーションがあります。WebAPI と MVC アプリケーションの両方をローカルで実行すると、WebAPI 応答は成功と表示されますが、SendAsync 要求は 500 を返します。また、Fiddler は API 呼び出しを表示しません。非同期リクエストの処理方法に関係があるのではないかと疑っていますが、何が欠けているのかわかりません。
API への 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);
}
Post の戻り値にブレークポイントを設定すると有効な応答が表示されますが、応答では MVC コントローラーで 500 が表示されます。
return Request.CreateResponse(HttpStatusCode.OK, result);
クライアントが 500 を表示している理由について何か考えはありますか?