BRAINDUMP: ScriptMethod-Attribut und UseHttpGet
Okay, nach einer Weile hab selbst ich es rausbekommen: Wenn man per ASP.NET AJAX eine Webdienst-Methode in einem JavaScript nutzen möchte, dann sollte man sich nicht nur auf die Dokumentation verlassen. Dort steht nämlich, dass der Webdienst so aussehen sollte:
namespace AJAXSample [WebService(Namespace = "urn:bla"), /// [WebMethod, ScriptMethod]
{
///
///
ScriptService]
public class GoodMorningService : WebService
{
///
public string GoodMorning()
{
return “Guten Morgen!”;
}
}
}
Die wirklich wichtige Stelle ist mal gefettet und gekursivt
. Das Einbinden kann dann per JavaScript in einer Seite (nach der Registrierung des Services im ScriptManager-Control) so aussehen:
Doof nur, dass das nicht funktioniert. Man erhält immer nur die Info, dass der Webservice nicht definiert sei.
Ein wenig googlen brachte mich dann – mal wieder – zur ASP.NET Zone und siehe, ich fand die Lösung: Beim ScriptMethod-Attribut muss explizit der Zugriff per HTTP-GET erlaubt sein:
[WebMethod, ScriptMethod(UseHttpGet=true)]
public string GoodMorning()
{
return “Guten Morgen!”;
}
Dann funktioniert es auch.
Comments(2)