Абсолютный путь URL-адреса Asp.Net URL-адреса

Чтобы упростить для webapp обмениваться файлами с другим приложением на другом сервере, я использую базовый тег href на моей главной странице. Как многие люди обнаружили, это нарушает пути веб-формы. У меня есть рабочий класс адаптера, но я не уверен, как получить абсолютный путь к URL. В настоящее время моя программа жестко запрограммирована, чтобы использовать что-то похожее на:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

Стоит отметить, что в настоящее время я тестирую свой локальный сервер IIS, поэтому существует странная тенденция ко многим вещам, которые я пытался использовать, чтобы абсолютный путь не включал имя домена (мой локальный IIS не видно снаружи). Это означает, что это не абсолютный путь, и поэтому базовый href разрушит его.

Есть ли хороший способ справиться с этим так, что он будет работать локально без жесткого кодирования, но также будет корректно работать при загрузке на сервер? Я бы предпочел избежать всего, что связано с выполнением чего-то другого на стороне сервера.

Да, я понимаю, что я могу использовать отдельные файлы web.config локально и на сервере, чтобы получить эту информацию, но это уродливо и нарушает DRY.

Ответ 1

Я использовал это в прошлом:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Ответ 2

Старый пост, но вот еще несколько менее подробный метод

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

Ответ 3

Я использовал следующий код и работал у меня как для клиента, так и для сервера.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

Ответ 4

Код:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];