Question

J'ai un site Web qui se connectera à l'utilisateur après un certain temps d'inactivité. Cela se fait par le code suivant:

 window.location = "./logout.aspx?timeout=true";

Mais trois fois dans les deux dernières jours, j'ai reçu l'exception suivante:

System.Web.HttpException

The file '/NIR310/Person/logout.aspx' does not exist.

   at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Tout d'abord l'erreur semblait évidente depuis logout.aspx ne figure pas dans le dossier « Personne », mais au niveau de la racine, mais pourquoi ne pas se produire à chaque fois que je suis déconnecté du dossier « personne »? Je l'ai fait la même routine, encore et encore, mais l'erreur se produit presque jamais.

Toutes les idées?

Était-ce utile?

La solution

Vous pouvez vous assurer que vous avez toujours le bon chemin à la racine de votre site en écrivant le chemin complet résolu dans la page comme suit (en supposant que votre page est dans le déconnecter dossier racine):

window.location = '<%= ResolveUrl("~/logout.aspx?timeout=true")%>';

Si votre page est pas dans la déconnexion du dossier racine, procédez comme suit:

window.location = '<%= ResolveUrl("~/Pathtoyourpage/logout.aspx?timeout=true")%>';

De cette façon, la redirection fonctionnera même si vos voies de développement et de production sont différents.

Hope this helps.

Autres conseils

Modifiez votre code à ce qui suit:

window.location = "/logout.aspx?timeout=true";

En supprimant le '' à partir de l'URL que vous allez toujours à la racine du site.

EDIT: Comme il est indiqué dans les commentaires Erikric veut aller à la racine du dossier virtuel « NIR310 ».

window.location = "/NIR310/logout.aspx?timeout=true";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top