[英]500 (Internal Server Error) ASP.Net MVC 5 c#
嘗試保存對象時,我不斷收到錯誤500(內部服務器錯誤)。 我似乎找不到任何方法甚至可以檢查確切的錯誤。
我正在嘗試通過API控制器保存對象,然后在完成時返回該對象。 我可以返回一個字符串,錯誤就會消失,我敢肯定,我可以找到一種方法使它對我有用,但這似乎是解決一個簡單問題的骯臟方法。
該對象保存得很好,它在通過我的控制器運行后一直拋出該錯誤。
這是我的API調用:
self.postCategory = function (data) {
return $.ajax({
url: '/API/Category/',
type: 'POST',
dataType: 'json',
data: ko.toJSON(data),
contentType: 'application/json; charset=urf-8',
success: function (data) {
self.getAlert('sucessfully saved category', 1);
self.Category(data);
},
error: function (error) {
self.getAlert(error, 4);
}
});
}
這是處理呼叫的控制器:
public Category Post([FromBody]Category category)
{
using (MyContainer db = new MyContainer())
{
if (db.Categories.Where(n => n.Id == category.Id).Any())
{
db.Categories.Attach(category);
db.Entry<Category>(category).State = EntityState.Modified;
}
else
{
db.Categories.Add(category);
}
try
{
db.SaveChanges();
return category;
}
catch (Exception e)
{
Elmah.ErrorSignal.FromCurrentContext().Raise(e);
return new Category();
}
}
}
這似乎只發生在具有一對多關系的與其相關的記錄的類別中。 沒有相關記錄的新類別或類別更新不會出現相同的問題。
對我而言,這不再有意義。
任何幫助將不勝感激!
謝謝!
問題出在我的淘汰賽綁定上。
這個:
function CategoryModel(data) {
var self = this;
self.Id = data.Id;
self.Name = ko.observable(data.Name);
self.Products = ko.observableArray([]);
}
應該是這樣的:
function CategoryModel(data) {
var self = this;
self.Id = data.Id;
self.Name = ko.observable(data.Name);
self.ProductModels = ko.observableArray([]);
}
在我的.edmx中,我默認將實體之間的關聯命名為“產品”和“類別”。 然后,當我撥打電話時,它將發送帶有產品的類別,對類別進行更新,然后返回帶有復雜對象的類別。 這對webapi不利,因此會引發500錯誤。
解決方案:使用與關聯相同的名稱,以其他任何方式命名您的observableArray。
謝謝您的幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.