簡體   English   中英

500內部服務器錯誤ajax發布json

[英]500 Internal Server Error ajax post json

我使用ASP.NET MVC和Knockoutjs建立了一個網站。 它托管在Windows Sever 2012上的IIS上。還有另一個Web應用程序,在該應用程序中,我使用ajax進行POST,並且該應用程序未給出任何錯誤。 使用單擊綁定將網站上的“提交”按鈕綁定到此功能。 當我在本地主機上以調試模式運行它時,此方法有效。

self.SubmitEvaluation = function () {
    reqUrl = "/Home/SubmitEvaluation";
    $.ajax({
        type: "POST",
        url: reqUrl,
        data: JSON.stringify({ evaluation: ko.toJSON(self) }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            if (response == 1) {
                self.EvalComplete(true);
            } else {
                self.EvalComplete(false);
                alert("Submission Failed.  Please resubmit!!!")
            }
        },
        error: function (jqXHR, exception) {                
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].'+exception.toString());
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });

在家庭控制器中,我有這兩種Web方法。

[HttpGet]
    public string Test()
    {
        Logger.Logger.WriteLog("Test", "Inside Test");
        TestModel product = new TestModel();
        product.Name = "Apple";
        product.Price = "3.99M";
        return JsonConvert.SerializeObject(product);
    }
    [HttpPost]
    public int SubmitEvaluation(string evaluation)
    {
        Logger.Logger.WriteLog("Submitevaluation", "Inside SubmitEvaluation");          
        int result = -1;
        try
        {
            EvaluationModel eval = JsonConvert.DeserializeObject<EvaluationModel>(evaluation);
            MySqlConnection conn = new MySqlConnection(connStr);
            conn.Open();

            string sql = "INSERT INTO xyz table blah blah blah";
            MySqlCommand cmd = new MySqlCommand(sql, conn);
            result = cmd.ExecuteNonQuery();
        }
        catch(Exception ex)
        {
            Logger.WriteLog("Submitevaluation", ex.ToString());
        }
        return result;
    }

當我單擊“提交”按鈕時,我收到來自Ajax請求的內部服務器錯誤500。

但是,如果我這樣做http://xxx.xxx.xxx.xxx/Home/Test,我將返回json結果{“名稱”:“蘋果”,“價格”:“ 3.99M”}。

Fiddler的響應標頭

HTTP / 1.1 500內部服務器錯誤Cache-Control:私有Content-Type:text / html; charset = utf-8服務器:Microsoft-IIS / 8.0 X-AspNetMvc版本:4.0 X-AspNet版本:4.0.30319 X-Powered-由:ASP.NET日期:2014年1月9日,星期四16:22:16 GMT內容長度:276

打開客戶錯誤和詳細的錯誤消息后,我收到此消息。

Could not load file or assembly 'MySql.Data, Version=6.8.3.0, Culture=neutral,    PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The system cannot find the file specified

我從http://dev.mysql.com/downloads/connector/net/下載了Mysql連接器,並通過右鍵單擊參考>擴展並選擇4.0版本來添加該程序集。 我也嘗試過4.5。

卸載6.8,然后下載6.7。 現在可以使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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