簡體   English   中英

500(內部服務器錯誤)ASP.Net MVC 5 c#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM