Как мне “плавно” отформатировать URI HttpHandler?
-
02-07-2019 - |
Вопрос
Я просто вмешиваюсь в работу веб-сервиса RESTful на C #, используя ASP.Net 2.0 и сумели (с помощью библиотеки классов, ссылки на dll, созданной первой, и некоторой настройки моего web.config) получить формат URI следующим образом:
http://localhost/DevelopmentProject/testhandler/?input=thisismyinput
Который ничем не примечателен, просто возвращает входные данные в виде фрагмента текста с поясняющим префиксом "Ваш ввод был:"
У меня сложилось впечатление, что я мог бы еще больше сгладить URI до чего-то более похожего на:
http://localhost/DevelopmentProject/testhandler/thisismyinput
и получаете тот же результат, но понятия не имеете, как избавиться от надоедливого "?input="
Запись в разделе httphandlers моего web.config выглядит так (добавлены пробелы для отображения кода):
< добавить глагол="*" путь="testhandler/*" тип="HandlerLib.testhandler, HandlerLib"/ >
Я запускаю IIS 5.1 на локальном компьютере, возникнет ли из-за этого проблема?
По сути, где я ошибаюсь?
Спасибо.
Решение 3
Другие советы
Одно из решений - использовать UrlRewriting, чтобы переписать URL на то, что вам нужно.
Я использую http://urlrewriter.net/ чтобы сделать все мое переписывание, и вы могли бы настроить что-то подобное в своем сценарии
<rewriter>
<rewrite
url="DevelopmentProject/testhandler/([\w]+)"
to="DevelopmentProject/testhandler/?input=$1" />
</rewriter>
Это останется "http://localhost/DevelopmentProject/testhandler/thisismyinput" в адресной строке вашего браузера, но обрабатывается как "http://localhost/DevelopmentProject/testhandler/?input=thisismyinput"
Вы могли бы реализовать перезапись URL-адреса, используя что-то вроде URLRewriter.net Это позволило бы вам использовать синтаксис, о котором вы упомянули.
Измените свою конфигурацию с:< добавить verb="" path="testhandler/" type="HandlerLib.testhandler, HandlerLib"/ > к:< добавить глагол="" путь="testhandler/*" тип="HandlerLib.testhandler, HandlerLib"/ >
Проверьте значение Request.PathInfo в функции ProcessRequest вашего обработчика с URL-адресом, подобным http://localhost/DevelopmentProject/testhandler/thisismyinput.
Если это не поможет, убедитесь, что IIS 5.1 направляет ВСЕ запросы на aspnet_isapi.dll.(Хотя, кажется, что это уже так) Это кнопка "Конфигурация ..." > вкладка "Сопоставления приложений" в вашем виртуальном каталоге в IIS.