Archive for Februar 14th, 2008

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
{
   ///

   /// Webdienst
   ///

   [WebService(Namespace = "urn:bla"),
      ScriptService]
   public class GoodMorningService : WebService
   {

      ///

      /// Webmethode
      ///

      [WebMethod, ScriptMethod]
      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.