如何"平稳"格式化HttpHandler URI?
我只是在Cusing ASP.Net 2.0中干预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部分的条目是(添加了空格,以便显示代码):
<添加动词=" *" path =" testhandler / *" type =" HandlerLib.testhandler,HandlerLib" />
我在本地计算机上运行IIS 5.1,这会带来问题吗?
本质上我要去哪里错了?
谢谢。
解决方案
我们可以使用URLRewriter.net之类的方法实现URL重写
这样一来,我们就可以使用所提到的语法。
一种解决方案是使用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"
我有点被骗。
尝试:
我关于我如何解决它的文章
从以下位置更改配置:
<添加动词="" path =" testhandler /" type =" HandlerLib.testhandler,HandlerLib" />
到:
<添加动词="" path =" testhandler / *" type =" HandlerLib.testhandler,HandlerLib" />
在处理程序的ProcessRequest函数中检出Request.PathInfo的值
使用类似http:// localhost / DevelopmentProject / testhandler / thisismyinput的URL。
如果这样做不起作用,请确保IIS 5.1将所有请求都路由到aspnet_isapi.dll。 (尽管看起来已经是)这是IIS中虚拟目录中的"配置..."按钮>"应用程序映射"选项卡。