Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Псевдоним для url - а

5.9K
29 октября 2007 года
Zushenskiy
161 / / 29.06.2006
Есть некий URL к примеру http://host_name/virt_cat/somepage.aspx

как можно отловить запросы по урлам
http://host_name/virt_cat/somepage/random_values и сделать им редирект на
этот урл

random_values с каждым запросом разное.

то есть:
первый запрос
http://host_name/virt_cat/somepage/12a73423 редирект на
http://host_name/virt_cat/somepage.aspx

второй запрос
http://host_name/virt_cat/somepage/4c568adf редирект на
http://host_name/virt_cat/somepage.aspx

....


использую ASP.net 2.0 и IIS 6.0

За ранее благодарен за помощь
5
30 октября 2007 года
hardcase
4.5K / / 09.08.2005
Можно создать http-обработчик (GenericHandler) на все глаголы с указанием маски
"http://host_name/virt_cat/somepage/*", в методе ProcessRequest которого выполнять перенаправление (context.Request.Redirect(...) - если мне не изменят память) на реальную страницу обработки.

Как создавать пободный обработчик я описывал в соседней ветке (про картинки с другого сайта).
5.9K
30 октября 2007 года
Zushenskiy
161 / / 29.06.2006
вот так получается
http://host_name/virt_cat/somepage.aspx/12a73423 редирект на
http://host_name/virt_cat/somepage.aspx
а вот так нет (404)
http://host_name/virt_cat/somepage/12a73423 редирект на
http://host_name/virt_cat/somepage.aspx

:confused::confused::confused:
5.9K
30 октября 2007 года
Zushenskiy
161 / / 29.06.2006
Все вопрос исчерпан
Нужно было написать пользовательский HttpModule а не GeneralHandler, к примеру вот так

Код:
namespace mappingurl {
    public class mapurl: IHttpModule {
        void IHttpModule.Init(HttpApplication app) {
            app.BeginRequest += new EventHandler(app_BeginRequest);
        }

        void app_BeginRequest(object sender, EventArgs e) {
            try {
                HttpApplication app = sender as HttpApplication;
                string requestUrl = app.Request.RawUrl;
                app.Context.RewritePath("/test/default.aspx?requestUrl=" + requestUrl);
                app.Context.Items["VirtualUrl"] = requestUrl;
                app.Response.Write(requestUrl);
            } catch { }
        }
        void IHttpModule.Dispose() { }
    }
}
Все равно, hardcase огромное тебе спасибо ты мне показал куда нужно копать. Да и еще вдруг кто столкнется с подобной задачей также необходимо указать что обработку запросов на низком уровне должна проводить ASP.NET. Делаеться так:
Цитата:

В свойствах сайта на странице ”Virtual Directory” нажать кнопку ”Configuration”, в появившемся окне на странице Mappings в разделе ”Wildcard application maps …” добавить новый айтем со следующими параметрами: Executable=”C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”, Verify_that_file_exist=false.

все после чего скомпиленный модуль положить в папку bin вашего сайтеца и радуемся :)

5
30 октября 2007 года
hardcase
4.5K / / 09.08.2005
Да незачто. Дома студии покачто нету (переустановил винды) - так бы сам поковырял.

Цитата: Zushenskiy
также необходимо указать что обработку запросов на низком уровне должна проводить ASP.NET


Ну эт известные грабли ;)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог