Ответить.Перенаправление время от времени вызывает ошибку, но я не могу ее воспроизвести

StackOverflow https://stackoverflow.com/questions/1326741

Вопрос

У меня есть веб-сайт, который выводит пользователя из системы после некоторого бездействия.Это делается с помощью следующего кода:

 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 содержится не в папке "Person", а на корневом уровне, но почему это не происходит каждый раз, когда я выхожу из папки "Person"?Я выполнял одну и ту же процедуру снова и снова, но ошибка почти никогда не возникала.

Есть какие-нибудь идеи?

Это было полезно?

Решение

Вы можете убедиться, что у вас всегда есть правильный путь к корню вашего сайта, введя полный разрешенный путь на страницу следующим образом (при условии, что ваша страница выхода находится в корневой папке):

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