Как запросить ресурс (относительный путь) с текущего сервера?

2

Если у меня есть относительный путь, который мне нужно получить с текущего сервера. Следующие не работают, потому что это не допустимый URI.

var request = WebRequest.Create("\path_to_resource")

Я считаю, что самым простым способом было бы установить путь в web.config, однако это легко сломать, забыв обновить конфигурацию, когда приложение будет перемещено на другой сервер. Есть ли лучший способ, чем?

var request = WebRequest.Create(ConfigurationManager.AppSettings["root"] + "\path_to_resource");
Теги:

1 ответ

3
Лучший ответ

Ну, вы всегда можете использовать что-то вроде:

private string CurrentDomain()
{
    string currDomain = Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host;
    if (Request.Url.Port != 80 && Request.Url.Port != 443)
        currDomain += (":" + Request.Url.Port);
    return currDomain;
}

Используя эти различные свойства Request, вы получите свое текущее доменное имя, на которое вы можете добавить свои подпапки для своего ресурса.

Request.Url.Scheme является частью http / https URL, System.Uri.SchemeDelimiter является частью ://, а Request.Url.Host будет вашим фактическим именем хоста (т.е. example.com).
Если ваш сайт работает на нестандартном порту, вызовы на Request.Url.Port также добавят его в URL-адрес "имя домена".
Обратите внимание, что это не пуленепробиваемый код, так как он предполагает, что ваш (например) запуск SSL (https) на порту по умолчанию 443

Если вам нужны фактические физические пути к файлам, вы можете использовать Server.MapPath, чтобы получить физический путь к файлу "root" вашего ASP.NET и добавьте туда свои подпапки.

Смотрите также: Пути веб-сайта ASP.NET

  • 0
    Что делать, если приложение не находится в корне домена?
  • 0
    Если его нет в корне, вы можете использовать: Request.ApplicationPath. Так что "CurrentDomain () + Request.ApplicationPath +" /MyPage.aspx "

Ещё вопросы

Сообщество Overcoder
Наверх
Меню