يسبب respone.redirect خطأ مرة واحدة في حين، لكن لا يمكنني إعادة إنتاجه

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 غير موجود في مجلد "الشخص"، ولكن عند مستوى الجذر، ولكن لماذا لا يحدث ذلك في كل مرة عند تسجيل الدخول من مجلد "الشخص"؟ لقد فعلت نفس الروتين مرارا وتكرارا، ولكن الخطأ لا يحدث أبدا.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

يمكنك التأكد من أن لديك دائما المسار الصحيح بجذر موقعك من خلال كتابة المسار الكامل للحل في الصفحة كما يلي (على افتراض صفحة تسجيل الخروج في مجلد الجذر):

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