我想在 VB.NET 中使用 Response.Write() 重定向到相对 URL。我正在使用以下代码:
编辑:
Response.Write(("account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))
Response.Write(("~/account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))
和
Response.Write(("/account/msgbox.aspx?action=account&status=" & Convert.ToInt16(eAccountStatus).ToString))
在我的情况下返回相同的值。
我的应用程序错误事件处理程序报告正在形成的 url 无效。
这是我得到的:
http://localhost:14154/~/http:/localhost:14154/account/msgbox.aspx?action=account&status=6
而不是这个
http:/localhost:14154/account/msgbox.aspx?action=account&status=6
Response.Write() 之前的 Response.Clear() 什么都不做。
在整个项目使用 Response.Write() 之前,我现在不能使用/切换到 Response.Redirect( ) 并且选择使用 Response.Redirect() 将使所有在 Response.Write 调用之后编写的代码都变得无用。
我只需要清除以某种方式附加的基本 url。请让我知道如何实现这一目标。
谢谢。
PS:此代码以前运行良好。一些开发人员进行了更改,现在 Response.Write() 不会导致上述重定向。
编辑
堆栈跟踪:
System.Web.HttpException (0x80004005):文件“/~/account/msgbox.aspx”不存在。在 System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) 在 System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) 在 System.Web.Compilation。 BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) 在 System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) 在 System .Web.Compilation.BuildManager。