You can use HttpServerUtility.MapPath on the server side in order to get the physical path of a file, then return it in the Application or Session object, similarly to what you are doing now.
As for the physical path of a URL - there might not be one, as URLs can be re-written.