【发布时间】:2018-07-15 00:26:48
【问题描述】:
堆栈溢出。
我今天遇到的问题是,当我向 localhost:xxxxx 发送一个 get 请求,试图通过 ID 获取单个食物项目时,我收到 500 内部服务器错误。
对此我不明白的是,我在调试中检查了代码,它显示它从我的数据库中找到了包含它需要的所有信息的项目,但是当它以“OK(food) ",即使它有信息,我也会收到 500 内部服务错误。
我对 web api 还很陌生,所以我将不胜感激。我正在使用 Visual Studio 2015、Entity Frame Work 6 和 SQL Management Server DB。
很抱歉发布链接,它说我需要 10 声望才能发布图片
protected void Page_Load(object sender, EventArgs e)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:63591/");
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync("api/foods/" + Request.QueryString["ID"]).Result;
if (response.IsSuccessStatusCode)
{
string foodstring = response.Content.ReadAsStringAsync().Result;
Food editFood = JsonConvert.DeserializeObject<Food>(foodstring);
EditFoodName.Text = editFood.FoodName;
EditCalories.Text = editFood.Calories.ToString();
EditNotes.Text = editFood.Notes;
}
}
[ResponseType(typeof(Food))]
public IHttpActionResult GetFood(int id)
{
Food food = db.Foods.Find(id);
if (food == null)
{
return NotFound();
}
return Ok(food);
}
public partial class Food
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Food()
{
this.MealFoods = new HashSet<MealFood>();
}
public int FoodID { get; set; }
public string FoodName { get; set; }
public int Calories { get; set; }
public string Notes { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<MealFood> MealFoods { get; set; }
}
【问题讨论】:
-
在调试时是否提供了有关 500 异常的任何额外信息?
-
没什么。我之前遇到过这个问题,并被告知要创建一个伪类来解决一个关于从数据库中获取所有食物的错误,但当时我什至无法连接到数据库。此时我可以,但即使它有信息,它也会返回 500。
-
看起来你是从 asp.net 页面调用这个 api 的。您可以尝试直接从浏览器/提琴手调用它吗:localhost:63591/api/foods? id=123
-
我的意思是,我可以,但它不会显示任何东西,因为我试图在 asp.net 上显示它。
-
我不确定我是否在关注。它只是说,这个 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。 i.imgur.com/A5cQwcS.png
标签: c# asp.net-web-api https entity-framework-6