Search code examples
c#.netasp.netresolveurl

ResolveUrl without an ASP.NET Page


I am looking for a way to resolve a relative url the way you would with a page or control instance (MSDN Docs) such as:

Page.ResolveUrl("~/common/Error.aspx");

...but when I only have an HttpContext available to me, such as when I am in a HttpHandler.

Will I need to use a custom function, such as the one seen here?

Or is there a way to get at the underlying function used by the Page.


Solution

  • Try to get the page from the handler and use ResolveUrl, or create a Control object...

    (HttpContext.Current.Handler as Page).ResolveUrl("~/virtualpath");
    

    Or use VirtualPathUtility.ToAppRelative(string) or VirtualPathUtility.ToAbsolute(string)

    For example:

    System.Web.VirtualPathUtility.ToAbsolute("~/Styles/Contoso.xslt");
    

    returns

    /WebSite/Styles/Contoso.xslt