Каковы преимущества файла обработчика ASHX в asp.net?

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

  •  03-07-2019
  •  | 
  •  

Вопрос

Каковы преимущества использования ashx или обработчика? Кроме того, они мне нужны, если я использую MVC (и почему нет)?

Имеет ли значение фреймворк (2.0 +)?

Зачем мне использовать обработчик? Недавно мне было рекомендовано использовать его для получения изображения, но я не знаю почему.

Спасибо за ваше время.

Изменить - обработчик быстрее?

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

Решение

Всего несколько примеров:

<Ол>
  • Генерация динамического изображения . Вы можете написать обработчики, которые возвращают управляемые данными изображения, создав обработчик ASHX, который возвращает данные изображения, и затем использовать этот URL в своих тегах. например <img alt="user's custom icon" src="Icon.ashx?username=bob"></img>

  • Возврат данных на основе REST XML или JSON в код AJAX на клиенте.

  • Пользовательский HTML . Возвращает полностью настраиваемый HTML-код для страницы, когда веб-формы ASP.NET или среда MVC слишком ограничены
  • Я полагаю, что это доступно с 1.0

    Другие советы

    Назначение обработчиков в проектах, отличных от MVC, заключается в предоставлении какого-либо закодированного ответа вне HTML. Обычно обработчик возвращает XML (rss, RESTful и т. Д.), JSON для jQuery или другой Javascript, а иногда просто чистые данные, такие как двоичные файлы для загрузки. Я использовал обработчики, чтобы даже вернуть специальный javascript, который будет исполнен на клиенте, как способ ленивой загрузки большого двоичного файла или требований к & Quot; request-only & Quot; подход. Более или менее, обработчик будет использоваться для возврата & Quot; всего, кроме HTML & Quot;.

    В MVC вы бы отошли от обработчиков и использовали контроллер для возврата любых данных, которые вам нравятся. Итак, в методе вроде:

    mywebsite.com/restapi/content/56223
    

    У вас RestfulContentController будет метод для Index (), который НЕ будет возвращать View (), а вместо этого будет чистый XML или JSON.

    public class JSONContentController : Controller
    {
      public JsonResult Index(int ContentID)
      {
        // get Content() by ContentID
        //
    
        // return a JSON version
        return Content().SerializeToJSON();
      }
    }
    

    Они очень полезны, если вы работаете в среде, в которой у вас нет доступа к IIS, но вы хотите изменить такие вещи, как заголовки ответов с истекшим сроком давности, чтобы оптимизировать кэширование для таких файлов, как css, images, JavaScript

    Для изображений вы можете выполнять такие вещи, как оптимизация «на лету», поэтому вы можете запрашивать изображения, например image.jpg.ashx? w = 180 & amp; quality = 70, а затем использовать обработчик для доставки изображения на основе настроек передается в строке запроса

    aspx наследует страницу, которая реализует IRequireSessionState. Поэтому, если вы вызываете его через Ajax, asp.net необходимо заблокировать сеанс перед дальнейшей обработкой.

    Для файла ashx он не имеет состояния. Если вы не наследуете его от IRequireSessionState для управления состоянием.

    Используйте ashx для всех вызовов Ajax и используйте aspx для чисто asp.net-страницы.

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