在IIS上针对ASP.NET页面使用Restful URL

4

我很抱歉给这篇文章起了一个不太恰当的标题。

无论如何,我开始慢慢地重新关注Web和ASP.NET。我是一名C#开发人员,但在过去的五年中我主要从事Windows应用程序开发。并不是说我在这段时间内完全没有接触过Web开发,而是以Web服务(包括Restful和丑陋的SOAP服务)以及更“原始”的Web请求的形式接触。

然而,在所有这些时间里,我都没有使用过IIS或ASP.NET。

我想做的是托管一个使用URL风格的网页,可以最好地描述为“像Rest”,因此有了“Restful urls”这个标题。因为我认为大多数人会从以下方面考虑这种URL:

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

等等。并不是说它们一定要看起来像那样,但我希望使用这种URL而不是

。涉及IT技术相关内容。
http://example.com/item?id=23

我知道subtext可以做到这一点,但是我在他们的代码库中没有找到它。

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

我希望这有一定的意义,并且有人手头上有比我能找到的更好的示例。


你使用的是哪个 .net 框架和 IIS 版本? - DotNetUser
我其实不能保证百分之百,因为部署还有一段时间,所以我猜到那个时候我们会使用.NET 4.0和IIS 7.5。这是我当前本地拥有的情况。但我已向公司发出了支持请求,询问.NET/操作系统/IIS版本信息。现在假设使用.NET 4.0和IIS 7.5。 - Jens
根据托管公司的说法,我有使用IIS 7和.NET 4.0(Windows 2008服务器)的机会。 - Jens
@Jens 你看过这个吗?ASP.Net Routing with WebForms(不是MVC或WCF)http://msdn.microsoft.com/en-us/magazine/dd347546.aspx - Lloyd
4个回答

3

嗨,这似乎不是我想要实现的内容。从那个系列中我所看到的,他们最终使用 T4 模板生成输出,而我只想使用 ASP.NET 渲染器或者你可能称之为的东西。其余大多数似乎都在谈论 WCF,这根本不是我想要的。 - Jens
好的,就像现在这个例子一样,它只是一个糟糕的例子,Routes确实很有用,另一个人提供了一个更好的例子。 - Jens
我在几个WCF项目中使用了路由,发现它易于理解和简洁,没有太多需要处理的内容,而且它很有效。 - Lloyd
是的,正如我上一句话所说,“博客文章”或者一系列文章只是我的案例的一个糟糕的例子,因此它并没有展示出如何有用。这里另一个人发布的“如何:使用Web表单进行路由”的链接则相反,所以我只是过于匆忙地根据那个似乎与我的情况无关的例子来判断这个概念。 - Jens

3

2
这里是你的选择 -
对于使用IIS7的.Net 3.5 SP1框架,您可以使用ASP.NET路由功能来拥有MVC风格的URL。 正如您提到的,应创建一个实现IRouteHandler接口的自定义路由处理程序,如此处所述 How to:Use Routing with Web Forms并在Global.asax中的Application_Start方法中注册您的路由规则。 对于您的示例,您可以注册以下路由。
    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");

在全局.asax文件的Application_Start方法中。
这个链接更详细地解释了Routing

1
一种实现这个的方法是使用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接