http модуль не может получить правильный URL страницы - PullRequest
0 голосов
/ 28 октября 2011

Привет, у меня очень интересный вопрос. Я использую модуль http, чтобы сделать права доступа. Допустим, пользователь - «admin», тогда он получил разрешение на просмотр страницы. Модуль http получит право доступа из базы данных на основе URL-адреса страницы, после чего модуль http определит, разрешен ли пользователю доступ или нет.

Вот мой пример кодирования:

 public void Init(HttpApplication context)
    {
        context.AcquireRequestState += new EventHandler(context_AcquireRequestState1);

    }



    void context_AcquireRequestState1(object sender, EventArgs e)
    {
        try
        {

           string requestUrl = application.Request.AppRelativeCurrentExecutionFilePath.ToString().Trim();
            //return last string of .aspx
         string   requestAspx = requestUrl.Substring(requestUrl.LastIndexOf('/') + 1).Trim();

    }

но модуль http будет запущен несколько раз. Он не может получить URL-адрес правильно. Например, в первый раз он может получить ~ / Module / Admin / Role / RoleManagementList.aspx. тогда второй раз получит неправильный URL ~ / favicon.ico. Может кто-нибудь помочь мне решить эту проблему? большое спасибо

1 Ответ

0 голосов
/ 28 октября 2011

Вы не получаете "неправильный" URL. Браузер пользователя просто делает другой запрос для другого ресурса. Ваш http-модуль будет выполняться для каждого http-запроса, что будет означать один для каждого ресурса в дополнение к «странице», такой как favicons (отображается в URL браузера, а иногда запрашивается, даже если у вас его нет) или изображения, внешние .css, внешние файлы .js и т. д., на которые есть ссылки на странице (если только они не обслуживаются IIS напрямую, минуя стек ASP.NET). Вам нужно будет рассмотреть все эти URL в вашем модуле.

В зависимости от того, насколько жестко вы управляете средой развертывания, вы также можете / вместо этого иметь возможность освобождать определенные расширения файлов от каждого попадания на asp.net, если IIS просто обслуживает их напрямую. Смотри http://msdn.microsoft.com/en-us/library/ms972953.aspx

...