如何在通用.ashx处理程序中将文件的虚拟路径解析为适合浏览器的路径?
e.g。我想转换:
~/asp/ClockState.aspx
到
/NextAllowed/asp/ClockState.aspx
如果我是WebForm Page
,我可以致电ResolveUrl
:
Page.ResolveUrl("~/asp/ClockState.aspx")
解析为:
/NextAllowed/asp/ClockState.aspx
但我不是WebForm页面,我是一个通用的处理程序。你知道,IHttpHandler
对象注入了各种各样的东西:
public class ResetClock : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
//[process stuff]
//Redirect client
context.Response.Redirect("~/asp/ClockState.aspx", true);
}
public bool IsReusable { get { return false; } }
}
答案 0 :(得分:7)
您可以使用VirtualPathUtility类来执行此操作。这包含使用路径的各种方法。你需要的是ToAbsolute(),它将相对路径转换为绝对路径。
var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");
但是,您仍然可以在Response.Redirect调用中使用代字号,因此以下内容仍然有效:
Response.Redirect("~/asp/ClockState.aspx");
在使用Response.Redirect之前,您无需将URL转换为绝对路径。