.NET - динамически получить URL-адрес веб-корня другого проекта. - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть 4 проекта WebForms в моем решении. Я хочу иметь возможность перенаправлять URL-адреса на страницу в другом проекте WebForms.

В настоящее время я должен установить URL / номер порта в веб-настройках моего проекта, установить этот URL-адрес в моей веб-конфигурации в качестве параметра приложения, затем прочитать его и обработать перенаправление.

Это настоящая боль и делает развертывание в различных средах неприятным. Есть ли способ динамически обрабатывать это с помощью кода?

Чтобы сделать вышеописанное еще более сложным, я могу сопоставить все проекты в IIS следующим образом:

  • www.mydomain.com / project1
  • www.mydomain.com / тест / project2
  • www.mydomain.com / тест / project3

Но это не должно иметь значения, потому что вы можете сделать это, чтобы получить Web Root Url для сервера, на который я хочу перенаправить:

HttpContext.Current.Request.ApplicationPath;

Я не уверен, что мне лучше всего подходит обработка маршрута веб-конфигурации или я могу сделать это динамически?

Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Это довольно стандартный шаблон, и, хотите верьте, хотите нет, соглашения и конфигурация - это способы справиться с этим - IIS может лгать, или IIS может не знать, что вы от него хотите, и может легко дать вам неправильный ответ.,Итак, как я уже говорил:

  • Соглашение: есть какие-то стандартные отношения для URL в вашем приложении?Особенно в отношении dev, CI и QA, которые обычно являются частыми развертываниями?Если это так, установите соглашение по умолчанию, чтобы ваше приложение всегда мыслило правильно.Как правило, лучшее или, по крайней мере, самое простое в обращении - это иметь все разные приложения в приложениях IIS вне общего корня.

  • Конфигурация: обычно для производственного использования, где может быть URL / ssl /другие вещи в игре.Сделайте все папки настраиваемыми.

Хитрость для извлечения материала из IIS, кроме того факта, что он часто не дает вам желаемого ответа, это то, что у вас есть много экологических вещейпроработать.Предполагая, что ваше приложение может получить разрешения для запроса метабазы, вам все равно нужно знать идею виртуального сайта и т. Д. Фактически проще явно указать URL-адрес, чем выяснить его.

1 голос
/ 06 января 2012

http://www.gotknowhow.com/articles/how-to-get-base-url-in-aspnet

public static string BaseSiteUrl
    {
        get
        {
            HttpContext context = HttpContext.Current;
            string baseUrl = context.Request.Url.Scheme + "://" + context.Request.Url.Authority + context.Request.ApplicationPath.TrimEnd('/') + '/';
            return baseUrl;
        }
    }
...