【发布时间】:2019-10-31 18:21:04
【问题描述】:
我正在为 web api 设置一个新服务器,但是当我尝试从两个单独的客户端发出发布请求时,服务器只响应第一个。从第二个开始,我总是收到 500 Internal Server Error。
我尝试将服务器中的所有方法设为异步,但发生了同样的错误。
我如下调用网络服务:
using(var client = new HttpClient())
{
client.BaseAddress = new Uri("http://serverdomain/ApiName/")
var response = client.PostAsync("controller/method",
keyvaluepairContent);
result = response.Result.Content.ReadAsAsync<List<string>>().Result;
}
相关服务代码如下:
[Route("controller/method")]
[AcceptVerbs("POST")]
public List<string> Foo([FromBody] someparams)
{
//some logic
}
我将配置文件写为:
config.Routes.MapHttpRoute(
name : "DefaultApi",
routeTemplate : "{controller}/{action}/{id}",
defaults : new { id = RouteParameter.Optinal }
);
同时对于一个客户端,服务器运行良好。我得到了我需要的东西。但是,当两个客户端甚至针对不同的方法发出请求时,延迟的客户端总是会收到 500 Internal Error。调试器说下面这段代码无法解析结果,那是因为响应不是字符串列表而是上面的错误。
result = response.Result.Content.ReadAsAsync<List<string>>().Result;
我认为我的代码很好,但我需要配置我的 web api。我确实搜索了它,但没有结果。
【问题讨论】:
-
这不是问题的答案,但我注意到您使用
HttpClient错误,请查看 this -
服务器抛出什么样的异常?