データベースにアクセスできるAPIとRestSharpでAPIを呼び出すアプリケーションが1つあります。 RestSharpのすべての非同期メソッドを実装して汎用オブジェクトを処理しました。 GET、POST、DELETEはすべて動作しています。私が動作させることができないのはPUTだけです。このすべてのRestSharp非同期PUT
まず、私のコントローラはPUTです:
[HttpPut("{id}")]
public void Put(int id, [FromBody]ApplicationUser value)
{
string p = value.Email;
}
これは私の方法である:
public Task<bool> PutRequestContentAsync<T>(string resource, object id, T resourceObject) where T : new()
{
RestClient client = new RestClient("http://localhost:54008/api/");
RestRequest request = new RestRequest($"{resource}/{{id}}", Method.PUT);
request.AddUrlSegment("id", id);
request.AddObject(resourceObject);
var tcs = new TaskCompletionSource<bool>();
var asyncHandler = client.ExecuteAsync<T>(request, r =>
{
tcs.SetResult(r.ResponseStatus == ResponseStatus.Completed);
});
return tcs.Task;
}
と、このビューでは、私のコール(GETの他のすべての呼び出しをされ、... )正常に動作している:
bool putOk = await new RepositoryCall()
.PutRequestContentAsync("Values", 2,
new ApplicationUser {
Email="[email protected]"
}
);
デバッグで、応答ステータスはCompleted
ですが、PUTが呼び出されることはありません。
どのような問題が発生する可能性がありますか?
あなたはPUTを参照していますが、リポジトリ呼び出しにはDELETEが反映されています。おそらく間違ったコードをコピーしてコピーしたでしょう。 – serhiyb
@serhiybうん、私が投稿した方法が間違っていた。更新:D –
あなたはどのWebサーバーをテストしましたか? IIS/IIS Express? – serhiyb