J'appelle un certain nombre de méthodes qui ont été décorées avec [WebMethod] via jQuery ajax.Cycle de vie de la page ASPX lors de l'appel de [WebMethod] s
Ceux-ci nécessitent une connexion à une base de données à mettre en place dans une bibliothèque externe qui sera la même pour chaque méthode.
Mon code d'origine ressemblait à ceci:
public partial class Server : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// code to set up DB connections
ExternalLibrary.SetupDB();
}
[WebMethod]
public static string AjaxAccessibleMethod()
{
try
{
// get some data from the database via the external library
ExternalLibrary.CallDatabase();
}
catch(Exception ex)
{
// handle errors
}
}
}
Cela fonctionnait, mais ont commencé à lancer des exceptions affirmant que la base de données du ExternalLibrary n'a pas été initialisé. Placer des points d'arrêt dans mon code J'ai découvert que l'événement Page_Load n'était pas appelé lors de l'appel de mon AjaxAccessibleMethod, j'ai aussi essayé de déplacer le programme d'installation DB dans l'événement Page_Init mais de la même manière il n'a pas été appelé.
Quelqu'un peut-il m'expliquer le cycle de vie de la page aspx lors de l'utilisation de WebMethods? Le fait que cela a fonctionné initialement semble impliquer que Page_Load a été appelé, mais il ne l'est plus.
http://stackoverflow.com/a/18072090/885626 – Ric