ihttphandler для записи файла в том виде, в каком он есть

StackOverflow https://stackoverflow.com/questions/2421811

  •  19-09-2019
  •  | 
  •  

Вопрос

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

ЭИДТ:

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

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

Это было полезно?

Решение

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

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();

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top