我从控制器调用了一个HttpPost方法到Web API。对于其他方法,响应是正常的,除了下面提到的说明错误的方法
之外,该方法运行良好{StatusCode: 500, ReasonPhrase: 'Internal Server Error', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Pragma: no-cache
Connection: Close
Cache-Control: no-cache
Date: Fri, 16 Aug 2013 09:49:25 GMT
Server: ASP.NET
Server: Development
Server: Server/10.0.0.0
X-AspNet-Version: 4.0.30319
Content-Length: 1855
Content-Type: application/json; charset=utf-8
Expires: -1
}}
我的方法
public int CustomerRegistration(CustomerRequestResponse req)
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(ConfigurationManager.AppSettings["ServerAddress"].ToString());
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
Uri gizmoUri = null;
var Response = client.PostAsJsonAsync("api/MyAccount/CustomerRegistration", req).Result;
int result = 0;
if (Response.IsSuccessStatusCode)
{
gizmoUri = Response.Headers.Location;
result = Response.Content.ReadAsAsync<Int32>().Result;
}
return result;
}
catch { throw; }
}
我怎样才能确定代码中的错误在哪里?有什么建议??
编辑:: 跟踪指定“System.Net.Http.ObjectContent”
的错误{Method: POST, RequestUri: 'http://localhost:56003/api/MyAccount/CustomerRegistration', Version: 1.1, Content: System.Net.Http.ObjectContent`1[[ServiceEntities.MyAccount.CustomerRequestResponse, ServiceEntities, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], Headers:
{
Accept: application/json
Content-Type: application/json; charset=utf-8
Content-Length: 495
}}
任何修复建议。?
EDIT1:
</Message><ExceptionMessage>No MediaTypeFormatter is available to read an object of type 'CustomerRequestResponse' from content with media type 'text/plain'.</ExceptionMessage>
答案 0 :(得分:2)
我要做的第一件事是验证客户端正在执行的请求是否正确 - 正确的URL,标题,正文。为此,您可以在应用程序中启用fiddler
作为代理。将此部分添加到Web.config
并尝试使用fiddler打开再次运行代码 - 现在您应该能够在fiddler中看到请求:
<system.net>
<defaultProxy>
<proxy proxyaddress="http://127.0.0.1:8888" />
</defaultProxy>
</system.net>
如果请求正常,请检查您尝试连接的服务器是否已启动并正在运行,并且正在为您提供正确的响应和正确的标头。
我怀疑它应该足以识别问题。
BTW:在现实生活中你的catch
块确实做了一些有用的事情吗?为了使它比现在更有用,你可以添加一些log4net日志记录,这可能也有助于识别任何未来的问题。
答案 1 :(得分:0)
我认为在MyAccountController的CustomerRegistration操作上处理数据时存在错误。如果在进行操作时发生错误,我希望您检查控制器。
答案 2 :(得分:0)
如果您具有标准DLL(后端)和Web脚本(前端:例如ashx或aspx等)设置,则很容易忘记上传(到服务器)对Web脚本所做的更改。 我收到了这样的错误,但是当我确保我的所有代码/脚本都是同步并上传到服务器时,它就消失了。