如何“平滑”格式化HttpHandler URI?

时间:2008-09-26 11:08:01

标签: c# asp.net rest httphandler web-services

我正在使用ASP.Net 2.0干预C#中RESTful Web服务的方式,并且已经管理(通过类库,对前者生成的dll的引用以及对web.config的一些调整)哄骗这样的URI格式:

http:// localhost / DevelopmentProject / testhandler /?input = thisismyinput

不显着地只是将输入作为一段文本返回,并带有启发性前缀“Your Input Was:”

我的印象是,我可以让URI进一步得到更多的内容:

http:// localhost / DevelopmentProject / testhandler / thisismyinput

并且有相同的结果,但不知道如何摆脱讨厌的“?input =”

我的web.config的httphandlers部分的条目是(添加空格以显示代码):

< add verb =“*”path =“testhandler / *”type =“HandlerLib.testhandler,HandlerLib”/>

我在本地计算机上运行IIS 5.1,这会引入问题吗?

基本上我哪里出错?

感谢。

5 个答案:

答案 0 :(得分:1)

一种解决方案是使用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”

答案 1 :(得分:0)

您可以使用URLRewriter.net之类的内容实施网址重写 那会让你使用你提到的语法。

答案 2 :(得分:0)

我有点被骗了。

尝试:

My Article About How I Got Round It

答案 3 :(得分:0)

更改您的配置:    &LT; add verb =“”path =“testhandler /”type =“HandlerLib.testhandler,HandlerLib”/&gt; 至:    &LT; add verb =“”path =“testhandler / *”type =“HandlerLib.testhandler,HandlerLib”/&gt;

答案 4 :(得分:0)

在处理程序的ProcessRequest函数中查看Request.PathInfo的值 使用http://localhost/DevelopmentProject/testhandler/thisismyinput等网址。

如果不这样做,请确保IIS 5.1将所有请求路由到aspnet_isapi.dll。 (虽然,它似乎已经是)这是“配置...”按钮&gt; IIS中虚拟目录中的“App Mappings”选项卡。