【问题标题】:How do I "smoothly" format HttpHandler URI?如何“顺利”格式化 HttpHandler URI?
【发布时间】:2010-09-13 10:02:20
【问题描述】:

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

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

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

我的印象是,我可以让 URI 变得更加平滑,类似于以下内容:

http://localhost/DevelopmentProject/testhandler/thisismyinput

并得到相同的结果,但不知道如何摆脱讨厌的 "?input="

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

我在本地机器上运行 IIS 5.1,这会带来问题吗?

基本上我哪里出错了?

谢谢。

【问题讨论】:

  • 我只是希望有一些方法可以自然地做到这一点而无需添加,但 urirewriter 看起来很方便。
  • 一般来说,在您的网站中实施以处理此问题是一件很棒的事情。然而,我也在等待更自然的解决你的问题

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


【解决方案1】:

您可以使用 URLRewriter.net 之类的方式实现 URL 重写 这将使您可以使用您提到的语法。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      我有点作弊了。

      试试:

      My Article About How I Got Round It

      【讨论】:

        【解决方案4】:

        从以下位置更改您的配置: 到:

        【讨论】:

        • 我刚刚意识到有人进来并编辑了我的问题,所以它被问错了。真是个蠢才。我正在编辑它。
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-12
          • 1970-01-01
          • 2018-06-02
          • 2016-10-10
          相关资源
          最近更新 更多