2016-12-01 4 views
1

Ich habe ein Problem mit meinem C# WebMethod auf den Code hinter und 500 interne Serverfehler bekommen. Ich verstehe nicht wirklich, warum es nicht passiert, also wäre es wirklich toll, wenn mir jemand sagen könnte, was das Problem ist.500 Interner Server Fehler beim Aufruf einer WebMethod mit AJAX

enter image description here

So ist dieser Aufruf meiner Ajax und nicht funktioniert auch mit Daten und Datentypen nicht kommentiert werden.

$('#chkBxAutoCost') 
    .click(function(e) { 
      $.ajax({ 
       type: "POST", 
       url: "BatchReportCriteriaSelection.aspx/GetAutoJsonBatches", 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       data: "{}", 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        console.log("Request: " + 
         XMLHttpRequest.toString() + 
         "\n\nStatus: " + 
         textStatus + 
         "\n\nError: " + 
         errorThrown); 
       }, 
       success: function() { console.log("success") } 
      }); 
     } 
    ); 

Und dies ist mein Code hinter Methode der Seite:

[WebMethod] 
public string GetAutoJsonBatches() 
{ 
    return autoJsonBatches; 
} 

So habe ich einen Haltepunkt an diesem WebMethod angebracht und es ist nicht getroffen zu werden. Ich bin ziemlich fest, also wenn jemand eine Einsicht hätte, würde ich es sehr schätzen.

+0

Mögliche Duplikat [ASP.NET 500 Internal Server Error während Webmethod von Javascript Aufruf] (http://stackoverflow.com/questions/30011998/asp-net-500-internal -server-error-while-calling-webmethod-from-javascript) –

+0

Versuchen Sie, Ihre Methode 'static' zu erstellen: http://stackoverflow.com/questions/30011998/asp-net-500-internal-server-error-while- Calling-Webmethod-from-Javascript –

+0

Vielen Dank. Es statisch zu machen, fixierte es. Ich kann jedoch keine Antwort von hier akzeptieren! Wenn Sie eine Antwort unter meine hinzufügen, werde ich es akzeptieren! :) – Seamy

Antwort

0

Also wie botond in den Kommentaren mein Problem war, dass webmethods statisch sein müssen! Vielen Dank hat wirklich meinen Kopf ruiniert!

0

Damit dieser Web-Service aus einem Skript mit ASP.NET AJAX aufgerufen werden kann, müssen Sie das Attribut [System.Web.Script.Services.ScriptService] für Ihren WebService verwenden.

[System.Web.Script.Services.ScriptService] 
public class WebService1 : System.Web.Services.WebService 
{ 

    [WebMethod] 
    public string GetAutoJsonBatches() 
    { 
     return autoJsonBatches; 
    } 
} 

Und Sie haben uns nicht zur Verfügung gestellt, was genau die Ausnahmemitteilung ist.

1

Zuerst müssen Sie bearbeiten RouteConfig.cs und verwenden

settings.AutoRedirectMode = RedirectMode.Off; 

Weiter bearbeiten Sie Ihre GetAutoJsonBatches() zu static

Sie sind statisch, weil sie völlig staatenlos sind, werden sie nicht schaffen eine Instanz Ihrer Seite Klasse und nichts wird ihnen in der Anfrage (dh ViewState und Formularfeldwerte) übergeben.

HTTP ist standardmäßig statuslos, ASP.Net macht eine Menge Zeug im Hintergrund mit ViewState, Session usw. während einer Standardseite Anfrage, um das Leben einfacher für Entwickler zu machen.

Source

[WebMethod] 
public static string GetAutoJsonBatches() 
{ 
    return autoJsonBatches; 
}