Вопрос

Я просто вмешиваюсь в работу веб-сервиса 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.

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