【发布时间】:2018-10-04 16:19:16
【问题描述】:
每次我发送请求时,响应都会说它有 500 服务器错误。但是,我控制了这个过程的双方,并且服务器没有出错。想法?!
以下是我们如何设置 HttpClient 来发送请求。顺便说一句,此客户端托管在 Microsoft 的 Dynamix CRM Online 中(以防万一):
client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/javascript"));
这就是我们从 CRM Online 中调用它并获得响应的方式:
var task = client.PostAsyncSecurely("api/Invoices/CreateInvoice/", iHelper);
var result = task.GetAwaiter().GetResult();
是的,我们创建了自己的扩展,但它所做的只是将我们传入的模型转换为发送(根据接收 API,它正在工作)。
public static Task<System.Net.Http.HttpResponseMessage> PostAsyncSecurely(this System.Net.Http.HttpClient client, string requestUri, System.Net.Http.ByteArrayContent content)
{
return client.PostAsync(requestUri, content);
}
我们尝试了多种方式,在我们服务器上的 Web API 中创建响应,但无济于事:
[HttpPost]
public HttpResponseMessage CreateInvoice([FromBody]Object invoiceHelper)
return Request.CreateResponse(HttpStatusCode.OK);
return new HttpResponseMessage(HttpStatusCode.OK);
return this.StatusCode(HttpStatusCode.OK);
【问题讨论】:
-
它是否进入了您的 ControllerMethod?
-
它正在进入我的控制器操作,并一直通过它,至少到返回响应的位置。
-
此外,Window 的事件日志中没有任何内容。这些 IIS 日志中也没有任何内容:C:\Windows\System32\LogFiles\HTTPERR
-
您可以使用
Fiddler(或任何HTTP 流量监控工具)来确认请求发送正确吗? -
请求正确到达我们的 API,并得到正确处理。
标签: asp.net-web-api dynamics-crm dotnet-httpclient dynamics-crm-online