IIS上的ASP.NET页面的Restfull URL

时间:2012-01-21 21:18:53

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

好的,我有一个巨大的问题,给了一个合适的标题,我的借口。

无论如何,我已经开始慢慢地再次查看Web和ASP.NET,我是一名C#开发人员但是我在过去5年左右的时间里主要使用Windows应用程序,并不是说我没有触及网络在那段时间,但这是作为Web服务(Restfull以及丑陋的SOAP服务),我也使用了更多“原始”Web请求。

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

我想做的是使用我最能用“休息”来描述的URL样式的网页,因此是“Restfull urls”标题。因为我认为大多数人都会想到这样的网址:

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的项目......

我希望这一切都有意义>。< ...而且有人有一些更好的例子,我能够找到的。

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

这是一个教程:

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

答案 2 :(得分:2)

所以这是您的选择 -

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

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

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

    requestContext.HttpContext.Items["itemId"]

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

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

在你的global.asax Application_Start方法中。

此链接详细介绍了Routing

答案 3 :(得分: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