Вопрос

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

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

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

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

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

Это было полезно?

Решение

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

// 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;

Другие советы

Старый пост, но вот другой, чуть менее подробный метод

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

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

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

Код :

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top