我有一个网站,将注销用户一段时间不活动后。这通过下面的代码来完成:

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

但在过去几天我收到以下异常三次:

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)

起初因为logout.aspx没有在“个人”文件夹中包含的,但在根级别似乎是显而易见的错误,但为什么没有发生一次,当我从“人”的文件夹退出时间?我一直在做同样的例行一遍又一遍,但这个错误几乎从未发生。

任何想法?

有帮助吗?

解决方案

您可以确保您始终写完整的解决路径进入页面如下(假设你的注销页面是在根文件夹)有正确的路径到你的网站的根目录:

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

如果您的注销页面是不是在根文件夹,请执行以下操作:

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

这样即使您的开发和生产的路径是不同的。重定向将工作

希望这有助于。

其他提示

代码更改为以下:

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

通过去除 ''从URL,你总是会为网站的根目录。

修改结果 正如在注释中规定Erikric想去虚拟文件夹“NIR310”的根

window.location = "/NIR310/logout.aspx?timeout=true";
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top