2014-01-09 11 views
1

Я построил веб-сайт с использованием ASP.NET MVC и Knockoutjs. Это размещено в IIS на Windows Sever 2012. Существует еще одно веб-приложение, в котором я использую ajax для POST, и это приложение не дает никаких ошибок. Кнопка «Отправить» на веб-сайте привязана с помощью привязки кликов к этой функции. Это работает, когда я запускаю его в режиме отладки на локальном хосте.500 Внутренняя ошибка сервера ajax post json

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); 
      } 
     } 
    }); 

В домашнем контроллере у меня есть эти два веб-метода.

[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; 
    } 

Получаю сообщение Internal Sever Error 500 из запроса Ajax, когда я нажимаю кнопку «Отправить».

Но если я это сделаю http://xxx.xxx.xxx.xxx/Home/Test Получаю обратно результат json {"Name": "Apple", "Price": "3.99M"}.

заголовок Ответ Скрипач

HTTP/1.1 500 Internal Server Error Cache-Control: частный Content-Type: Текст/html; кодировка = UTF-8 Сервер: Microsoft-IIS/8.0 X-AspNetMvc-Version: 4.0 X-Сеть САШ-версия: 4.0.30319 X-Powered-By: ASP.NET Дата: Чт, 9 января 2014 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 

Я скачал разъем Mysql из http://dev.mysql.com/downloads/connector/net/ и я добавил узел правой кнопкой мыши на References> Расширения и выбора версии 4.0. Я также попробовал 4.5.

+0

Оценка '' оценки JSON.Stringyfy() и проверка – Arpit

+0

'данные: JSON.stringify ({оценка: ko.toJSON (self)}),' - Вы кодируете JSON с двойным кодированием. Вы уверены, что хотите этого? Используйте 'data: {оценка: ko.toJS (self)}'. Вам не нужно вообще кодировать JSON, jQuery делает это для вас. – Tomalak

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/5385714/deploying-website-500-internal-server-error), чтобы обнаружить основную ошибку. – CodeCaster

ответ

Смежные вопросы