And*_*ard 3 c# asp.net-web-api
我编写了一个ServiceHelper类,它将帮助POST到C#Web API控制器
public class ServiceHelper<TResponse, TRequest> : IServiceHelper<TResponse, TRequest>
{
public TResponse Execute
(
string endpoint,
string controller,
string action,
TRequest request,
string format = "application/json"
)
{
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri(endpoint);
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(format));
var response = httpClient.PostAsJsonAsync(String.Format("{0}/{1}", controller, action),
request).Result;
return response.Content.ReadAsAsync<TResponse>().Result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我继续得到
Additional information: No MediaTypeFormatter is available to read an object of type 'ReadMotorVehiclesWorkflowResponse' from content with media type 'text/html'.
Run Code Online (Sandbox Code Playgroud)
有想法该怎么解决这个吗?
显然,服务器返回您期望JSON的HTML,显然无法TResponse从HTML 反序列化...
我怀疑服务器实际上是返回错误代码,而HTML只是错误的直观表示.
您应该致电response.EnsureSuccessStatusCode()以确保响应表明成功(通常为200 OK).如果情况并非如此,则会引发异常.
好的,问题是应用程序池的 .NET 版本设置为 2.0 版,而 Web API 是为 .NET 4.0 版编写的,我更改了版本,现在它可以按预期工作。
值得注意的是,按照response.EnsureSuccessStatusCode()下面的答案中提到的方式拨打电话是个好主意。
| 归档时间: |
|
| 查看次数: |
12061 次 |
| 最近记录: |