Nous appelons le service Web Ajax Asp.Net du côté client. Ainsi, les fonctions JavaScript ont des appels comme:Comment réparer: InvalidOperationException lors de l'expiration de la session dans l'appel Ajax WebService
// La fonction pour modifier l'objet d'état côté serveur et définir le nœud sélectionné pour l'arbre de cas.
function JSMethod(caseId, url)
{
Sample.XYZ.Method(param1, param2, OnMethodReturn);
}
function OnMethodReturn(result)
{
var sessionExpiry = CheckForSessionExpiry(result);
var error = CheckForErrors(result);
... process result
}
Et du côté du serveur dans le fichier « .asmx.cs »: espace de noms Exemple
[ScriptService]
class XYZ : WebService
{
[WebMethod(EnableSession = true)]
public string Method(string param1, string param2)
{
if (SessionExpired())
{
return sessionExpiredMessage;
}
.
.
.
}
}
Le site est configuré pour utiliser l'authentification par formulaire. Maintenant si la session a expiré et que la fonction JavaScript "JSMethod" est invoquée, alors l'erreur suivante est obtenue: Erreur d'exécution Microsoft JScript: Sys.Net.WebServiceFailedException: La méthode du serveur 'Méthode' a échoué avec l'erreur suivante: Système .InvalidOperationException: l'authentification a échoué.
Cette exception est soulevée par la méthode "fonction $ Bénéfice net $ Sys WebServiceProxy $ Invoke" dans le fichier "ScriptResource.axd":
function Sys$Net$WebServiceProxy$invoke
{
.
.
.
{
// In debug mode, if no error was registered, display some trace information
var error;
if (result && errorObj) {
// If we got a result, we're likely dealing with an error in the method itself
error = result.get_exceptionType() + "-- " + result.get_message();
}
else {
// Otherwise, it's probably a 'top-level' error, in which case we dump the
// whole response in the trace
error = response.get_responseData();
}
// DevDiv 89485: throw, not alert()
throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error));
}
Le problème est que l'exception est soulevée avant même "Méthode" est invoqué, l'exception se produit lors de la création du proxy Web. Toute idée sur la façon de résoudre ce problème
-1: statique est seulement pour PageMethods –