4

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

无论如何,我已经开始慢慢重新审视 Web 和 ASP.NET,我是一名 C# 开发人员,但在过去 5 年左右的时间里,我主要使用 Windows 应用程序,这并不是说我没有接触过 Web 本身时间,但这是作为 Web 服务(Restfull 以及丑陋的 SOAP 服务),我还处理了更多“原始”Web 请求。

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

我想做的是拥有一个使用 URL 样式的网页,我可以用“like rest”来最好地描述,因此是“Restfull urls”标题。因为我认为大多数人从以下方面考虑这样的 URL:

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

我希望这是有道理的 >.<... 并且有人手头有一些我能找到的更好的例子。

4

4 回答 4

3

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

这是一个教程:

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

于 2012-01-21T23:48:41.820 回答
3

您可以使用Routing来实现这一点,这里是MSDN 博客的链接,The .Net Endpoint - Using Routes to Compose WCF WebHttp Services,应该可以帮助您入门。

于 2012-01-21T21:30:49.787 回答
2

所以这里是你的选择-

对于带有 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")
    ));  

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

    requestContext.HttpContext.Items["itemId"]

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

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

在你 global.asax Application_Start 方法中。

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

于 2012-01-22T17:03:04.397 回答
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
于 2012-01-21T22:23:12.670 回答