1
我想我現有的Web API控制器基於常規路由改變屬性的路由,所以我改變了我的現有代碼如下:屬性路由使用Asp.Net MVC 5和相關的問題的Web API 2
[Route("api/Visitors")]
public IQueryable<Visitor> GetVisitors()
{
return db.Visitors;
}
和GET方法的偉大工程,但是當我申請相同的屬性爲POST方法一樣:
[Route("api/Visitors")]
[ResponseType(typeof(Visitor))]
public async Task<IHttpActionResult> PostVisitor(Visitor visitor)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Visitors.Add(visitor);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = visitor.Id }, visitor);
}
它拋出以下異常:
An exception of type 'System.Net.Http.HttpRequestException' occurred in System.Net.Http.dll but was not handled in user code
Additional information: Response status code does not indicate success: 500 (Internal Server Error).
在該線以下的方法的resp.EnsureSuccessStatusCode();
:
public bool SaveVisitor(Visitor visitor)
{
HttpResponseMessage resp = client.PostAsJsonAsync<Visitor>("/api/Visitors", visitor).Result;
resp.EnsureSuccessStatusCode();
if (resp.StatusCode == System.Net.HttpStatusCode.Created)
return true;
else
return false;
}
client
是在類層次的HttpClient
一個實例。 我無法得到這個例外背後的原因。我在這裏錯過了什麼?如果我刪除屬性路由數據按預期保存/檢索。我指的是Attribute Routing
請幫忙。
我已經嘗試了兩個選項,你建議,但無濟於事:( – sdeep