2012-01-21 28 views
4

好吧,我有一个巨大的问题,给这个正确的标题,我的借口。IIS上ASP.NET页面的Restfull url

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

但我一直没有与IIS或ASP.NET工作。

我想要做的是使用一种网页风格,我最好用“像休息”一样描述网页,因此是“Restfull网址”标题。因为我认为大多数人都认为这样的网址是:

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

等等。这并不是说他们要像她那样,但是我想用这样的URL,而不是

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

我知道的潜台词这样做,但我已经没有任何运气在他们的代码库找到它。

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

我希望这是有道理的所有>。 < ...而且有人有一些更好的例子,我可以找到。

+0

您使用哪种.net框架和IIS版本? – DotNetUser

+0

我实际上并不是100%确定,部署有点远,所以我认为那时我们正在讨论.NET 4.0和IIS 7.5。 这就是我在当地的atm。但是我向该公司发出了一个支持请求,该请求旨在承载此请求并请求.NET/OS/IIS版本信息。 但现在假设使用.NET 4.0和IIS 7.5。 – Jens

+0

我有机会获得IIS 7和.NET 4.0(Windows 2008服务器)。根据托管公司。 – Jens

回答

2

因此,这里是你的选项 -

对于.NET 3.5 SP1框架,IIS7,您可以使用ASP。网络路由功能有你提到的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") 
    )); 

的路线,然后你可以通过检查请求上下文项

requestContext.HttpContext.Items["itemId"] 

为.NET框架4 MVC你不要在你的路由item.aspx页面访问的itemId必须创建一个自定义处理程序,你可以直接使用

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

你在global.asax中的Application_Start方法。

此链接解释更多关于Routing

3

你可以使用Routing来实现这个功能,这里有一个指向MSDN blog, The .Net Endpoint - Using Routes to Compose WCF WebHttp Services的链接,它可以帮助你开始。

+0

嗨,这似乎并不像是我想要实现的,就我从该系列中可以看到的,他们最终将使用T4模板来生成输出,我真的只想使用ASP.NET渲染器或者您可能称之为的模板。 其余的大部分似乎都谈论WCF,它根本不是我想要的。 – Jens

+0

好吧,就这样,这只是一个蹩脚的例子,Routes确实看起来很有用,另一个例子提供了一个更好的例子。 – Jens

+0

我在几个WCF项目上使用了路由,并且发现它简单而且简洁,没有多少处理和工作。 – Lloyd

1

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

如果你打算举办在Internet Information Services 7.x的Web应用程序,你可以利用IIS URL重写的模块:

URL重写只是映射一个不友好的,普通的网址,这是一个友好的编程友好的URL来检查GET参数。

例如:

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