5

如何从通用 .ashx 处理程序中将文件的虚拟路径解析为适合浏览器的路径?

例如我想转换:

~/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; } }
}
4

1 回答 1

7

您可以使用 VirtualPathUtility 类来执行此操作。这包含处理路径的各种方法。您需要的是 ToAbsolute(),它将相对路径转换为绝对路径。

var path = VirtualPathUtility.ToAbsolute("~/asp/ClockState.aspx");

但是,无论如何,您都可以在 Response.Redirect 调用中使用波浪号,因此以下操作仍然有效:

Response.Redirect("~/asp/ClockState.aspx");

在使用 Response.Redirect 之前,您不需要将 URL 转换为绝对路径。

于 2011-03-22T03:41:30.023 回答