Обнаружение адреса HTTPHandler - PullRequest
0 голосов
/ 10 января 2012

Я работал с HTTPHandler и у меня есть вопрос

Если у меня есть обработчик A, который зарегистрирован в web.config по адресу A.hdlr, я могу создать ссылку на этот обработчик, который будетперейдите к http://www.mysite.com/A.hdlr - блестящий.

Однако, если я обновлю свой файл web.config, этот адрес больше не будет действительным.Есть ли способ определить текущий настроенный адрес (и если он действительно настроен) для обработчика, чтобы я мог соответствующим образом обновить ссылки?

Отредактировано, чтобы добавить:

Я настроил в настоящее времяобработчик в разделе

<system.webServer><handlers>

в форме

<add name="MyHandler" verb="GET" path="MyHandler.hdlr" precondition="integratedMode" type="MyType" />

Однако я открыт для предложений - меня беспокоит то, что ссылка на «MyHandler.hdlr» непосредственно в коде прекратится, есликто-то обновляет этот конфигурационный адрес

1 Ответ

1 голос
/ 10 января 2012

что вы подразумеваете под обновлением файла веб-конфигурации?Не могли бы вы быть более понятным?

Единственный известный мне способ регистрации обработчика - указать его имя или расширение в файле веб-конфигурации.

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="A.hdlr" 
         type="HandlerA" />
    </httpHandlers>
  </system.web>
</configuration>

В нем говорится, что ресурс A.hdlrтогда запрос должен быть обработан HandlerA.ashx.

Хорошо, теперь у меня есть четкое понимание вашей озабоченности.Да, если какое-то тело изменит его на Foo.hdlr, то ресурс Foo.hdlr будет обслуживаться обработчиком MyType.Но подумайте, почему кто-нибудь это сделал?это то же самое, что написать код с плохой логикой.

Вы можете динамически зарегистрировать обработчик, написав код для изменения web.config (но он перезапустит домен приложения).Но это не гарантирует, что какое-то тело не сможет изменить ваш динамический код.Записи в web.config должны обрабатываться тщательно.

...