【问题标题】:Restfull urls for ASP.NET page on IISIIS 上 ASP.NET 页面的 Restful url
【发布时间】:2012-02-15 22:12:35
【问题描述】:

好吧,我有一个很大的问题,给它一个合适的标题,我的借口。

无论如何,我已经开始慢慢地重新审视 Web 和 ASP.NET,我是一名 C# 开发人员,但在过去 5 年左右的时间里,我主要使用 Windows 应用程序,这并不是说我没有接触过 Web,因为当时是这样,但这是作为 Web 服务(Restfull 以及丑陋的 SOAP 服务),我还处理过更多“原始”的 Web 请求。

但我一直没有使用过 IIS 或 ASP.NET。

我想做的是拥有一个使用 URL 样式的网页,我可以用“like rest”来最好地描述它,因此是“Restfull urls”标题。因为我认为大多数人从以下方面考虑这样的 URL:

http://example.com/item/
http://example.com/item/23/

等等。并不是说它们必须看起来像那样,但是我想使用这样的 URL 而不是

http://example.com/item?id=23

我知道 subtext 会这样做,但我没有运气在他们的代码库中找到它。

现在据我所知,我可以实现一些 IHttpHandler,但至少对于我所看到的示例,他们将页面源代码写回代码中,并且我仍然有母版页等。我希望使用而不是我自己接管所有这些东西,我真的只是想将http://example.com/item/23/ 路由到http://example.com/item 并要求ID为23的项目......

我希望这是有道理的>.<...>

【问题讨论】:

  • 您使用的是哪个 .net 框架和 IIS 版本?
  • 我实际上不是 100% 确定,部署有点遥远,所以我认为当时我们正在谈论 .NET 4.0 和 IIS 7.5。这就是我在当地的atm。但是我已经向公司发出了一个支持请求,目的是托管这个,并要求提供 .NET/OS/IIS 版本信息。但现在假设 .NET 4.0 和 IIS 7.5。
  • 我有机会使用 IIS 7 和 .NET 4.0(Windows 2008 服务器)。根据托管公司。
  • @Jens 你看过这个吗,ASP.Net Routing with WebForms(不是 MVC 或 WCF)msdn.microsoft.com/en-us/magazine/dd347546.aspx

标签: c# asp.net .net iis custom-url


【解决方案1】:

您可以使用Routing 实现此目的,这里有一个指向MSDN blog, The .Net Endpoint - Using Routes to Compose WCF WebHttp Services 的链接,应该可以帮助您入门。

【讨论】:

  • 嗨,这似乎不是我想要实现的目标,据我从该系列中可以看出,他们最终使用 T4 模板生成输出,我真的只是想使用 ASP.NET 渲染器或您可能称之为的渲染器。其余的似乎都在谈论 WCF,这根本不是我想要的。
  • 好吧,这只是一个蹩脚的例子,Routes似乎确实有用,另一个更好的例子。
  • 我在几个 WCF 项目中使用过路由,发现它简单明了,不需要太多处理,而且很有效。
  • 是的,作为我最后的陈述,“博客文章”或系列文章实际上只是我的案例的一个糟糕的例子,所以它没有显示如何有用。另一个人在这里发布的链接“如何:使用 Web 表单使用路由”是相反的,所以我只是草率地根据一个似乎与我的案例无关的例子来判断这个概念。
【解决方案2】:

实现此目的的一种方法是使用 URL 重写。

如果您计划在 Internet Information Services 7.x 中托管您的 Web 应用程序,您可以利用 IIS URL 重写模块:

URL 重写只是将一个友好的 URL 映射到一个不友好的通用 URL,这对于检查 GET 参数是编程友好的。

例如:

http://yourdomain.com/item/48 => http://yourdomain.com/Items.aspx?Id=48

【讨论】:

    【解决方案3】:

    如果您正在查看 asp.net/IIS,另一个可以查看的选项是 ASP.Net MVC。创建 RESTful 服务非常简单。

    这是一个教程:

    http://www.codeproject.com/Articles/233572/Build-truly-RESTful-API-and-website-using-same-ASP

    【讨论】:

      【解决方案4】:

      所以这里是你的选择-

      对于带有 IIS7 的 .net 3.5 sp1 框架,您可以使用 asp.net 路由功能来获得您提到的 MVC 样式 url,您应该创建一个自定义路由处理程序来实现 IRouteHandler 接口,如此处所述How to: Use Routing with Web Forms 并在 Application_Start 方法中注册您的路由规则在 Global.asax 中。对于您的示例,您可以注册这样的路线

          routes.Add("ItemRoute", new Route
          (
          "item/{itemId}", 
          new CustomRouteHandler("~/item.aspx")
          ));  
      

      然后您可以通过检查请求上下文项来访问路由 item.aspx 页面中的 itemId

          requestContext.HttpContext.Items["itemId"]
      

      对于.net framework 4 MVC你不必创建自定义处理程序,你可以直接使用

          routes.MapPageRoute("ItemRoute", "item/{itemId}", "~/item.aspx");
      

      在你的 global.asax Application_Start 方法中。

      此链接详细介绍了Routing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多