【发布时间】:2016-08-04 17:54:47
【问题描述】:
有一个应用程序,即可以访问数据库的 API 和一个使用 RestSharp 调用 API 的应用程序。 我实现了 RestSharp 的所有异步方法来通用。所以 GET、POST、DELETE 都在工作。我唯一不能工作的是 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="test@xxxxxxx.de"
}
);
通过调试,响应状态为Completed,但从未调用 PUT。
知道可能是什么问题吗?
【问题讨论】:
-
您指的是 PUT,但您的存储库调用反映了 DELETE。可能你复制粘贴了错误的代码。
-
@serhiyb 是的,是我发布的错误方法。更新:D
-
你在哪个网络服务器上测试过它? IIS/IIS Express?
-
应用程序现在直接使用 Visual Studio 2015 运行,所以 IIS Express
-
酷,谢谢你的回答。
标签: c# asp.net asp.net-core asp.net-web-api2 restsharp