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的物品…

我希望这完全有道理<。。。而且有人手头有一些比我所能找到的更好的例子。

IIS上ASP.NET页面的恢复URL

您可以使用路由实现这一点。这里有一个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