Что такое формат файла ASHX?
Расширение .ashx идентифицирует универсальный обработчик HTTP ASP.NET - серверный компонент, разработанный Microsoft. В отличие от стандартной страницы ASP.NET, обработчик .ashx обрабатывает HTTP-запросы напрямую и передает ответ (бинарные данные, JSON, изображения или файлы) без накладных расходов на полную отрисовку страницы, характерных для обычной страницы .aspx.
Подлинный исходный файл .ashx является текстовым. Он начинается с директивы, такой как <%@ WebHandler Language="C#" Class="MyHandler" %>, за которой следует класс, реализующий интерфейс IHttpHandler. Код внутри написан на C# или VB.NET; объем кода часто невелик, так как обработчики создаются для одной конкретной задачи.
Файлы .ashx могут неожиданно появиться при попытке скачать файл с веб-сайта. Это происходит, когда обработчик, отдающий файл - изображение, документ PDF или другой ресурс - не устанавливает правильный заголовок Content-Disposition, из-за чего браузер сохраняет ответ с суффиксом .ashx вместо нужного расширения.
Чтобы восстановить такой файл, можно использовать простую хитрость: переименуйте его, изменив .ashx на правильное расширение (например, .pdf для документа PDF или .jpg для изображения), а затем попробуйте открыть его любым приложением, поддерживающим этот формат. Тот же метод применим и к другим типам файлов - просто смените расширение на подходящее и откройте файл программой, поддерживающей данный формат.
Безопасность и защита
РИСК: LOWСамо расширение .ashx ничего не говорит о безопасности - в URL это просто конечная точка обычного веб-сайта; относитесь к сайту как к любому другому (остерегайтесь фишинга на страницах входа). Загрузка, пришедшая как .ashx, обычно является реальным файлом (PDF, изображение) с неправильным именем, и ее безопасно переименовать и открыть. Будьте осторожны только с неожиданными загрузками .ashx из ненадежных источников - проверяйте их как текст или по их реальному типу перед открытием и никогда не запускайте ничего, что они пытаются инициировать.
Детали формата
в двух словахПрограммы, открывающие файлы ASHX
Технические подробности
глубокая спецификация| Разработчик | Microsoft |
| Платформа | ASP.NET (.NET Framework; также поддерживается в режиме совместимости ранних версий ASP.NET Core) |
| Содержимое файла | Простой текст; начинается с директивы `<%@ WebHandler %>`, за которой следует тело класса C# или VB.NET |
| Реализуемый интерфейс | `IHttpHandler` (синхронный) или `IHttpAsyncHandler` (асинхронные операции) |
| Синтаксис директивы | `<%@ WebHandler Language="C#" Class="ClassName" %>` |
| Поддерживаемые языки | C# и VB.NET |
| MIME-тип по умолчанию | `text/html`; обработчик переопределяет его, устанавливая `context.Response.ContentType` перед выводом данных |
| Шаблон доступа по URL | Вызывается напрямую как конечная точка URL (например, `download.ashx?id=1`); не является отрисовываемой страницей браузера |
| Регистрация на сервере | Сопоставляется в `web.config` или в сопоставлениях обработчиков IIS; среда выполнения ASP.NET направляет соответствующие запросы классу обработчика |
| Бинарная сигнатура | Отсутствует - текстовый файл без магических байтов; исходные файлы идентифицируются только по начальной строке директивы |
| Состояние сеанса | Отключено по умолчанию; включается путем реализации `IRequiresSessionState` в классе обработчика |
| Общее использование | Загрузка файлов, динамическая генерация изображений, конечные точки AJAX/JSON, потоковая передача бинарных или текстовых данных |
| Современная замена | ПО промежуточного слоя (middleware) ASP.NET Core, Minimal APIs и расширения `IEndpointRouteBuilder` заменяют `.ashx` в .NET 5 и более поздних версиях |
| Поведение при загрузке | Браузеры сохраняют `.ashx` как суффикс файла, когда обработчик пропускает `Content-Disposition`; переименование в реальное расширение (`.pdf`, `.jpg` и т. д.) восстанавливает файл |
| Выпущен | 2002 (ASP.NET 1.0, .NET Framework) |
| Спецификация | learn.microsoft.com |
Конвертации ASHX
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах ASHX.