IIS上ASP.NET页面的恢复URL
本文关键字:恢复 URL ASP NET IIS | 更新日期: 2023-09-27 18:20:56
好吧,我遇到了一个巨大的问题,给它一个合适的标题,我的借口。
无论如何,我已经开始慢慢地重新审视Web和ASP.NET,我是一名C#开发人员,但在过去5年左右的时间里,我主要处理Windows应用程序。这并不是说我在那段时间里没有接触过Web,而是作为Web服务(Restfull以及丑陋的SOAP服务),我也处理过更多的"原始"Web请求。
但是我已经很久没有使用过IIS或ASP.NET了。
我想做的是创建一个使用URL样式的网页,我可以用"像rest一样"来描述它,因此有了"Restfull urls"的标题。因为我认为大多数人认为这样的网址是:
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的物品…
我希望这完全有道理<。。。而且有人手头有一些比我所能找到的更好的例子。
您可以使用路由实现这一点。这里有一个MSDN博客的链接,.Net Endpoint-using Routes to Compose WCF WebHttp Services,它应该让您开始使用。
如果您正在查看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,您提到的URL应该创建一个实现IRouteHandler接口的自定义路由处理程序,如下所述
routes.Add("ItemRoute", new Route
(
"item/{itemId}",
new CustomRouteHandler("~/item.aspx")
));
然后,您可以通过检查请求上下文项来访问路由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重写模块:
- http://www.iis.net/download/urlrewrite
URL重写只是将一个友好的URL映射到一个不友好的、常见的URL,这对检查GET参数是编程友好的。
例如:
http://yourdomain.com/item/48 => http://yourdomain.com/Items.aspx?Id=48