Повторное использование кода пользовательских обработчиков / элементов управления в ASP.NET C#

Недавно я решил написать собственный веб-элемент управления ASP.NET, чтобы сделать предварительный просмотр веб-сайта и отобразить его в виде изображения. Я нашел различные способы сделать это в Интернете и взял свои любимые части от каждого.

Первая версия веб-элемента управления работала достаточно хорошо, но предварительный просмотр не создавался асинхронно, поэтому использование элемента управления было разочаровывающим из-за времени загрузки. Я написал еще одну ревизию кода для генерации превью в разных запросах (с использованием обработчика), и это тоже сработало.

Моя третья ревизия состояла в том, чтобы написать собственный элемент управления, который использовал обработчик, чтобы я мог получить удобство управления и отложенную загрузку обработчика. Это хорошо сработало в собственном проекте. Когда это стало сложным, я попытался зарегистрировать обработчик из проекта библиотеки управления в другом проекте веб-сайта.

Во-первых, я иду об этом правильным путем? Это казалось отличной идеей, пока я не попытался зарегистрировать обработчик. Использование элемента управления достаточно просто.

Во-вторых, если это правильный способ сделать это, как мне зарегистрировать этот обработчик? Внутри веб-приложений web.config Я пробовал различные варианты имен классов и пространств имен, но всегда получаю 404, когда элемент управления пытается загрузить изображение из обработчика.

Вот что у меня есть сейчас, чтобы получить представление:

<add verb="GET" name="ThumbnailHandler" path="GenerateWebsitePreview.ashx" type="HandlerGenerateWebsitePreview, ThumbnailControl"/>

Имя: Это не имеет значения, насколько я могу судить. Это не требуется ни в одной из прочитанных мной документов и почти никогда не упоминается. Путь: это путь / URL, который я хочу вызвать обработчик. Это не существует в проекте веб-приложения, очевидно, и не должно. Я хочу, чтобы он использовал один из библиотеки. С обработчиками вы можете использовать любой путь, какой захотите. Тип: HandlerGenerateWebsitePreview - это имя класса, который реализует IHttpHandler. ThumbnailControl - это пространство имен, в котором находится этот класс.

У веб-приложения уже есть ссылка на проект библиотеки, который содержит пользовательский элемент управления и пользовательский обработчик. Известно, что эта ссылка работает, потому что пользовательские элементы управления найдены и обработаны.

Как вы повторно используете пользовательские обработчики, если не можете зарегистрировать обработчик из другого проекта? Атрибут "Assembly" не допускается в теге "Add", как при регистрации пользовательского элемента управления.

Заранее спасибо!

1 ответ

Решение

Я должен был потратить еще несколько минут, пытаясь найти имена сборок, пространства имен и имена классов. Я попробовал еще раз сегодня, и эта комбинация сработала там, где больше ничего не будет.

<add verb="GET" name="Name" path="path.path" type="Namespace.ClassName, AssemblyName"/>

Я думал, что попробовал эту комбинацию, но, видимо, я этого не сделал.

Другие вопросы по тегам