繁体   English   中英

IIS上的ASP.NET页面的Restfull URL

[英]Restfull urls for ASP.NET page on IIS

好吧,我有一个巨大的问题给这个正确的标题,我的借口。

无论如何,我已经开始慢慢地再次查看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的项目......

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

你可以使用路由实现这一点这里是一个链接到MSDN博客,.Net端点 - 使用路由编写WCF WebHttp服务 ,应该让你开始。

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

这是一个教程:

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

所以这是你的选择 -

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

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

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

    requestContext.HttpContext.Items["itemId"]

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

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

在你的global.asax Application_Start方法。

此链接解释了有关路由的更多信息

实现此目的的一种方法是使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM