2016-12-20 5 views
0

Ich bin verrückt mit diesem Fehler.POST 500 Interner Server Fehler

POST http://localhost:56105/Home/getContactbyId?ConId=%225%22 500 (Internal Server Error)

Hoffe, dass Sie der Lage sein, mir zu helfen. Ich muss Kontaktdaten basierend auf ContactId erhalten. Im Anschluss wird der entsprechende Code (Entschuldigung, wenn ich etwas verpasst, ich werde wenn nötig):

contactController.js

ContactsApp.controller("contactController", function ($scope, $rootScope, $routeParams, $location, myService) { 
    function getContactById(id) { 
     var getting = myService.get_Contact_By_Id(id);  
     getting.then(function successCallback(response) { 
      $rootScope.Name = response.data.Name; 
     }, function errorCallback(response) { 
         return "Error"; 
           }); 
       } 
     function init() { 
     var contactId = $location.path().split("/")[2]; 
        console.log(contactId); //this loggs the correct Id 
     getContactById(contactId); 
    } 
    init(); 
} 

myService.js

ContactsApp.service("myService", function ($http) { 
    this.get_Contact_By_Id = function (ConId) { 
    console.log(ConId); //this logs the correct id 
    return $http({ 
     method: 'post', 
     url: '/Home/getContactById', 
     params: { 
      ConId: JSON.stringify(ConId) 
     } 
    }); 
    } 
} 

HomeController.cs

public class HomeController : Controller 
{ 
    public string getContactById(int ConId) 
    { 
     int id_int = Convert.ToInt32(ConId); 
     using (ContactsDBEntities contactsData = new ContactsDBEntities()) 
     { 
      var theOne = contactsData.Contacts.Where(x => x.Id == id_int).FirstOrDefault(); 
      return theOne.Name; 
     } 
    } 
} 
+4

Ein Status von 500 bedeutet einen Fehler auf der Server-Seite zu sehen. Haben Sie auf dem serverseitigen Code Haltepunkte gesetzt, um zu sehen, wo er bricht, oder versucht, Ihre Ausnahmen zu protokollieren? – ADyson

+1

Wie @ADyson darauf hingewiesen hat, müssen Sie Ihren serverseitigen Code debuggen. Legen Sie Haltepunkte fest und hängen Sie Ihre IDE an. Wenn Sie das nicht können, fügen Sie etwas Protokollierung hinzu. – Igor

+0

Scheint, dass Zitate um Ihre ConId hinzugefügt werden, wie @DannyFardyJonstonBermúdez oben sagt ... Dekodierte URL - http: // localhost: 56105/Home/getContactbyId? ConId = "5" – KieranDotCo

Antwort

2

Mit JSON.stringify(ConId) wird eine Zeichenfolge in Anführungszeichen mitzurückgegebenNummer. params erwartet ein einfaches Objekt mit name : value Paaren. Einfach

params: { 
      ConId: ConId 
     } 

verwenden Wenn die ConIdstringify() mit gesendet wird, der Convert.ToInt32(ConId) Anruf wird eine Ausnahme für die Konvertierung (erwartete Anzahl, nicht ‚NUMBER‘) werfen. Sie sollten nach der Verwendung dieser Konvertierung oder eines try-catch-Blocks einige Validierungen vornehmen.

Auch könnte es ein Problem mit der Rückkehr FirstOrDefault() sein, wenn kein Ergebnis gefunden wird. Sie sollten auch die theOne Variable überprüfen, bevor Sie sie verwenden.

Sie sollen das Server-Anwendungsprotokoll (Application Event Viewer) überprüfen die Ausnahme verursacht, den HTTP-Fehler 500