web 2.0

ASP.NET AJAX Pagemethods und URLRewriting

Der Aufruf von PageMethods in Javascript ist ja relativ trivial:

   1:  <script type="text/javascript" language="javascript">
   2:      function updateDB() {
   3:          PageMethods.WriteReviewToDB(OnSucceeded, OnFailed);
   4:      }
   5:   
   6:      function OnSucceeded() {
   7:          showstep('finishStep');
   8:      }
   9:   
  10:      function OnFailed(error) {
  11:          alert(error.get_message());
  12:      }
  13:  </script>

Hierfür muss die Methode im Codebehind nur als shared (VB) bzw. static(C#) definiert werden und das Attribut Webmethod hinzugefügt werden. Wird bei dem Aufruf der Zugriff auf die Session benötigt, muss zusätzlich noch die EnableSession-Eigenschaft des WebMethod-Attributs aktiviert werden.

   1:    <WebMethod(EnableSession:=True)> _
   2:    Public Shared Sub WriteReviewToDB()
   3:  'Do Something
   4:    End Sub

Obwohl nun alles korrrekt eingestellt war, bekam ich aber die Fehlermeldung "Authentication failed". Nach einer Stunde Fehler suchen und Debuggen mit Firebug wurde dann die Ursache gefunden: ich setze UrlRewriting ein.

Die Lösung für dieses Problem ist schnell gefunden: PageMethods.set_path().

   1:  <script type="text/javascript" language="javascript">
   2:      function updateDB() {
   3:          PageMethods.set_path('/default.aspx');
   4:          PageMethods.WriteReviewToDB(OnSucceeded, OnFailed);
   5:      }
   6:   
   7:      function OnSucceeded() {
   8:          showstep('finishStep');
   9:      }
  10:   
  11:      function OnFailed(error) {
  12:          alert(error.get_message());
  13:      }
  14:  </script>

Tags:

ASP.NET

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading