Я просто вмешиваюсь в способы веб-службы RESTful на C# с использованием ASP.Net 2.0 и сумел (через библиотеку классов, ссылку на dll, созданную первым, и некоторую корректировку моего web.config), чтобы уговорить Формат URI такой:
http: // локальный / DevelopmentProject / testhandler /? input = thisismyinput
Что непримечательно, просто возвращает ввод в виде фрагмента текста с просветляющим префиксом «Ваш ввод был:»
У меня создалось впечатление, что я могу заставить URI еще больше приспособиться к чему-то большему, например:
http: // локальный / DevelopmentProject / testhandler / thisismyinput
и получите тот же результат, но не знаете, как избавиться от надоедливого "? input ="
Запись в разделе httphandlers моего web.config (пробелы добавлены, поэтому отображается код):
<add verb = "*" path = "testhandler / *" type = "HandlerLib.testhandler, HandlerLib" />
Я использую IIS 5.1 на локальном компьютере, возникнет ли это проблема?
По сути, где я ошибаюсь?
Спасибо.
Это отличная вещь, которую можно внедрить на свой сайт в целом для решения этой проблемы. Однако я также жду более естественного решения вашего вопроса





Вы можете реализовать перезапись URL, используя что-то вроде URLRewriter.net Это позволит вам использовать упомянутый синтаксис.
Одно из решений - использовать UrlRewriting, чтобы переписать URL-адрес на то, что вам нужно.
Я использую http://urlrewriter.net/ для всех своих переписываний, и вы можете настроить что-то подобное в своем сценарии
<rewriter>
<rewrite
url = "DevelopmentProject/testhandler/([\w]+)"
to = "DevelopmentProject/testhandler/?input = " />
</rewriter>
Это останется «http: // localhost / DevelopmentProject / testhandler / thisismyinput» в адресной строке вашего браузера, но будет обрабатываться как «http: // localhost / DevelopmentProject / testhandler /? Input = thisismyinput»
Измените свою конфигурацию с: <add verb = "" path = "testhandler /" type = "HandlerLib.testhandler, HandlerLib" /> к: <add verb = "" path = "testhandler / *" type = "HandlerLib.testhandler, HandlerLib" />
Я только что понял, что кто-то вошел и отредактировал мой вопрос, поэтому он был задан неправильно. Как глупо. Редактирую обратно.
Проверьте значение Request.PathInfo в функции ProcessRequest вашего обработчика. с URL-адресом типа http: // локальный / DevelopmentProject / testhandler / thisismyinput.
Если этого не произошло, убедитесь, что IIS 5.1 направляет ВСЕ запросы в aspnet_isapi.dll. (Хотя, похоже, это уже есть) Это кнопка «Конфигурация ...»> вкладка «Сопоставления приложений» в вашем виртуальном каталоге в IIS.
Я просто надеялся, что есть какой-то способ сделать это естественным образом без дополнений, но этот urirewriter выглядит удобно.