何時間も間違っていることを理解しようとしています。PutAsyncはWeb APIにリクエストを送信しませんが、フィドラーは正常に動作します
Mvcアプリケーションを介してputメソッドがヒットしない場合、リクエストは発生しません。しかし、私がファイトラーでそれをテストすると、APIのPutMethodが動作します。
うまくいけば誰かが私のために物事をクリアすることができます。
また、より良い構造や良いドキュメントのためのポインターを歓迎します。
public void UpdateWerknemerCompetentieDetail(int wnID, int WNC, CompetentieWerknemerDetail detail)
{
using (HttpClient client = new HttpClient())
{
string token = (string)HttpContext.Current.Session["token"];
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var wn = GetWerknemerById(wnID);
//var wnc = wn.CompetentiesWerknemer.Select(c => c).Where(c => c.ID == WNC).FirstOrDefault();
detail.CompetentieWerknemerID = WNC;
//wnc.CompetentieWerknemerDetail = detail;
var url = String.Format(URL + "PutDetails?id=" + WNC);
var json = JsonConvert.SerializeObject(detail, new JsonSerializerSettings()
{
ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
});
var response = client.PutAsync(url, new StringContent(json, Encoding.UTF8, "application/json"));
}
}
上記のコードは、APIにリクエストする必要があるサービスです。
ここには、Web APIのIHttpActionResultメソッド(putメソッド)があります。
[Route("PutDetails")]
[HttpPut]
public IHttpActionResult PutWerknemerCompetentieDetails(int id, [FromBody]CompetentieWerknemerDetail cwn)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != cwn.CompetentieWerknemerID)
{
return BadRequest();
}
//_db.Entry(cwn).State = EntityState.Modified;
try
{
_db.CompetentieWerknemerDetail.Add(cwn);
_db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!WerknemerExist(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
ありがとう、私はクライアントが処分されたという事実を忘れてしまい、PutAsyncが完了するまで待つ必要があった。 – Bruno