首页 > 解决方案 > 检查 Web API 的响应总是返回 500 错误(服务器上没有错误)

问题描述

每次我发送请求时,响应都会说它有 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);

标签: asp.net-web-apidynamics-crmdotnet-httpclientdynamics-crm-online

解决方案


要使用 Dynamics CRM Online WebAPI,您需要在租户的 Azure AD 中将您的应用程序注册为允许应用程序 ( Microsoft Link )

连接到 Dynamics CRM Online 的另一种方法是使用 SDK(如果您使用的是 .NET 语言)https://docs.microsoft.com/en-us/dotnet/api/microsoft.xrm.sdk.messages.createrequest ?view=dynamics-general-ce-9

希望能帮助到你


推荐阅读