72

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.

3 Answers 3

123

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
Sign up to request clarification or add additional context in comments.

1 Comment

in an IHTTPHandler and IHttpModule HttpContext.Current.Handler is null!
17

This question on SO (ASP.Net: Using System.Web.UI.Control.ResolveUrl() in a shared/static function) looks kind of helpful...Basically, you can use the VirtualPathUtility class which is under the System.Web namespace. There is an additional answer to that question which says to be careful of QueryString parameters, but a solution to that is also provided.

At the same time, Rick Strahl's code is pretty neat!

1 Comment

which good patterns and practices ? System.Web.VirtualPathUtility, HttpContext.Current.Handler or Rick Strahl's code ?
1

Use something like this - Controls is a folder name in your application and myController is the controller name. to create and instance and load the controller you can do it by:

Controls_myController ctrl = Page.LoadControl(Page.ResolveUrl("controls/myController.ascx"));

Hope this helps.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.