ihttphandler выписать файл именно так, как есть - PullRequest
0 голосов
/ 11 марта 2010

Я пишу класс, который наследуется от IHttpHandler для объединения скриптов и CSS. Я хочу объединить, только если для строки запроса определен специальный параметр. Если этот параметр не определен, то я хочу записать содержимое файла, как если бы обработчик даже не участвовал. Как лучше всего доставить файл в целости и сохранности?

Eidt:

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

Страница, на которую ссылается скрипт управления, находится по адресу webserver / Admin / Default.aspx. Когда я обращаюсь к объекту Request в классе, который реализует IHttpHandler, все свойства пути файла следующие: webserver / Admin / ~ / SharedScripts / control.js. Как мне решить это?

1 Ответ

2 голосов
/ 11 марта 2010

Вы можете проверить параметр строки запроса в методе ProcessRequest (контекст HttpContext) следующим образом:

context.Request.QueryString["paramertername"]

Если вы хотите транслировать запрошенный файл как есть, вы можете сделать следующее:

        string physicalFilePath = context.Request.PhysicalPath;
        string fileContent = string.Empty;

        // Determine whether file exists
        if (File.Exists(physicalFilePath))
        {
            // Read content from file
            using (StreamReader streamReader = File.OpenText(physicalFilePath))
            {
                fileContent = streamReader.ReadToEnd();
            }
        }

        context.Response.Output.Write(convertedFile);
        context.Response.Flush();

PS: Вы также можете проверить следующую статью проекта кода для более полного примера: http://www.codeproject.com/KB/locale/LocalizedScriptsAndStyles.aspx

...