In working with ASP.NET MVC, I came across the need to send an email with the URL of a document that is to be approved.  There are helper functions accessible from the View to build an ActionLink or get the URL of an action, but I had problems finding how to build this URL from within a controller.  Here is the simple code that I finally pieced together to do what I wanted:

Dim link As String = HttpContext.Request.Url.Scheme + _
    "://" + HttpContext.Request.Url.Authority + _
    Url.Action("ActionName", "ControllerName", New With {.id = idOfDocument})

HttpContext.Request.Url.Scheme returns “http” or “https”, which ever one you’re using.
HttpContext.Request.Url.Authority returns the Base Url of your application.
And, the Url.Action method creates the Url to the Controller, Action, and ID of the document that is being sent out for approval.