Получить доменное имя и путь, используя ASP.net - PullRequest
1 голос
/ 19 октября 2010

Мне нужно извлечь имя домена и путь из запроса, чтобы предоставить следующие возвращаемые значения:

domain1.com/default.aspx    returns      domain1.com/default.aspx
domain1.com/                returns      domain1.com/
domain1.com                 returns      domain1.com

В настоящий момент каждая функция выборки URL, которую я пытаюсь, возвращает domain.com/default.aspx независимо от того, чтоадресная строка в моем браузере говорит.Есть ли какое-либо решение для этого?

Я пробовал множество различных встроенных функций для извлечения частей запроса, но ни одна из них, похоже, не дает желаемых результатов.

Ответы [ 4 ]

1 голос
/ 19 октября 2010

Есть решение вашей проблемы.

HttpContext.Current.Request.Url вернет объект Uri, который содержит все части URL, разбитые для вас.Исходя из этого, вы сможете получить то, что ищете.В частности, вы хотите получить свойство Uri.Authority .

РЕДАКТИРОВАТЬ: Попробуйте что-то вроде:

    public static string GetPath(this HttpRequest request)
    {
        var authority = request.Url.Authority;
        var pathAndQuery = request.Url.PathAndQuery;
        var query = request.Url.Query;
        var path = pathAndQuery.Substring(0, 
                       pathAndQuery.Length - query.Length));

        if (!authority.EndsWith("/"))
            authority += "/";

        return authority + path;
    }
0 голосов
/ 19 октября 2010

Возможно, вы захотите создать в IIS один веб-сайт с несколькими привязками / заголовками узлов для ваших доменов и удалить default.aspx из документов по умолчанию.Вы должны , а затем сможете использовать элемент конфигурации urlMappings для облегчения перенаправления.Если вам нужна дополнительная информация о urlMappings, перейдите по этой ссылке: http://dotnetperls.com/urlmappings-aspnet

0 голосов
/ 19 октября 2010

Вы можете создать HttpModule для каждого домена - реализовать событие Application_BeginRequest следующим образом:

private void Application_BeginRequest(object source, EventArgs e)
{
    // get context and file path
    HttpContext context = ((HttpApplication)source).Context;
    string filePath = context.Request.FilePath;

    if (filePath.Equals("/"))
    {
        // redirect to products page
        context.Response.Redirect(filePath + "products.aspx");
    }
}

Это должно перенаправить http://www.domain1.com/ на http://www.domain1.com/products.aspx - запросы на http://www.domain1.com/default.aspx не должен перенаправлять.

0 голосов
/ 19 октября 2010

укажите документ по умолчанию в IIS, и он будет работать так же, как вы хотите. так что вы можете установить products.aspx в документе по умолчанию domain1.com и в domain2.com сделать его categories.aspx, и все будет установлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...