2008-12-09 7 views
1

J'utilise System.Web.Services.WebMethodAttribute pour faire une méthode statique publique d'une page ASP.NET appelable à partir d'un script côté client:erreur "méthode web inconnu" après Server.Transfer

test.aspx.cs

[System.Web.Services.WebMethod] 
public static string GetResult() 
{ 
    return "result"; 
} 

test.aspx

<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" /> 

<script type="text/javascript"> 
    alert(PageMethods.GetResult()); 
</script> 

La méthode fonctionne comme il se doit, mais si je charge test.aspx avec

Server.Transfer("test.aspx"); 

Je reçois une erreur « méthode web inconnue ». Après

Response.Redirect("test.aspx"); 

la page fonctionne bien.

Pourriez-vous me dire, s'il vous plaît, quelle est la raison de l'erreur et comment peut-elle aussi être évitée? Merci beaucoup! Où recevez-vous l'erreur - serveur ou client?

Répondre

0

Il semble appeler set_path résout le problème:

<script type="text/javascript"> 
    PageMethods.set_path("test.aspx"); 
    alert(PageMethods.GetResult()); 
</script> 
1

Si c'est sur le client, jetez un oeil à ce qu'il essaie de faire. Je suppose que vous allez trouver que c'est la page d'origine qui répond, plutôt que test.aspx.

+0

J'ai la même question mentionnée ici - http://www.west-wind.com/weblog/posts/152493.aspx –

1

Server.Transfer transfère le traitement de la page (au niveau du serveur) à la page que vous avez spécifié, mais le navigateur pense que vous êtes toujours sur la page originale:

Ainsi, par exemple, vous êtes sur start.aspx et dans le code derrière vous avez Server.Transfer ("test.aspx");

Votre navigateur pense que vous êtes toujours sur start.aspx, et le javascript enverra des requêtes aux méthodes de page sur start.aspx. En utilisant Response.Redirect, votre navigateur sait que vous êtes maintenant sur test.aspx et que les demandes sont envoyées correctement.

Questions connexes