URL-адрес asp.net без имени страницы и строки запроса

Я искал в Интернете простое и прямолинейное решение следующей проблемы, но, похоже, не нашел ничего, что соответствовало бы моим потребностям.

У меня есть сайт asp.net со многими подкаталогами следующим образом.

и т.д...

На каждой из страниц моих сайтов мне нужно извлечь URL-адрес страницы за вычетом имени страницы и строки запроса.

Итак, если имя страницы было http://mysite.com/dir1/subdir2/mypage.aspx?param=5¶m2=9

Мне понадобятся следующие http://mysite.com/dir1/subdir2/ Я не могу найти никаких свойств объекта httprequest, которые делают этот формат URL легкодоступным.


person carrot_programmer_3    schedule 28.02.2011    source источник


Ответы (3)


Вы правы, такая вещь не готова, поэтому вам нужно сделать ее самостоятельно. Один из рецептов:

public string GetSubFolderURL()
{
    string url = "http";
    if (string.Equals(Request.ServerVariables["HTTPS"], "ON", StringComparison.CurrentCultureIgnoreCase))
        url += "s";
    url += "://";
    url += Request.ServerVariables["SERVER_NAME"];
    int port;
    if (Int32.TryParse(Request.ServerVariables["SERVER_PORT"], out port) && port != 80)
        url += ":" + port;
    url += Request.ServerVariables["SCRIPT_NAME"];
    return url.Substring(0, url.LastIndexOf("/") + 1);
}
person Shadow Wizard Wearing Mask V2    schedule 28.02.2011

Взгляните на это. Он должен дать вам все, что вам нужно, особенно Url.Segments.

person indra    schedule 28.02.2011

Это также работает:

System.IO.Path.GetDirectoryName(url).Replace(@"\","/");
person Steve Mc    schedule 21.10.2011