加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET:如何从通用处理程序获取文件的虚拟路径?

发布时间:2020-12-16 07:09:33 所属栏目:asp.Net 来源:网络整理
导读:如何在通用.ashx处理程序中将文件的虚拟路径解析为适合浏览器的路径? 例如我想转换: ~/asp/ClockState.aspx 成 /NextAllowed/asp/ClockState.aspx 如果我是WebForm页面,我可以调用ResolveUrl: Page.ResolveUrl("~/asp/ClockState.aspx") 解析为: /NextAl
如何在通用.ashx处理程序中将文件的虚拟路径解析为适合浏览器的路径?

例如我想转换:

~/asp/ClockState.aspx

/NextAllowed/asp/ClockState.aspx

如果我是WebForm页面,我可以调用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; } }
}

解决方法

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

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

但是,您仍然可以在Response.Redirect调用中使用代字号,因此以下内容仍然有效:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读