MapHttpRoute vs MapRoute用于基本的POST WebAPI

时间:2013-09-25 10:23:06

标签: asp.net asp.net-web-api asp.net-4.5

鉴于我从教程中获取的以下简单Web API(不是MVC项目的一部分,只是一个空的ASP.NET站点):

Public Class AwesomeController
    Inherits ApiController

    Public Function [Get]() As String
        Return "Hello.  The time is " & DateTime.Now.ToString
    End Function

    Public Function Post(<FromBody> yourName As String) As String
        Return String.Format("Hi {0}, you posted here at {1}", yourName, DateTime.Now.ToString)
    End Function

End Class

我在global.asax中创建了这样的路径:

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    GlobalConfiguration.Configuration.Routes.Add("default", New HttpRoute("{controller}"))
End Sub

这很好用,但我读过WebAPI路由应该最好使用MapHttpRoute创建,这样服务就可以独立存在。这是真的?

如果是这样,任何人都可以发布代码来替换我的global.asax版本吗?

更新

我想到了最后一点,但是仍然会知道是否有'正确'的方式?

RouteTable.Routes.MapHttpRoute("default", "{controller}")

1 个答案:

答案 0 :(得分:2)

MapHttpRoute扩展方法只是在路由表中注册HttpRoute实例的便捷方式。不过,在不使用速记方法的情况下手动创建和注册HttpRoute是完全可以的。

如果您想了解MapHttpRoute的内部工作原理,请查看源代码:HttpRouteCollectionExtensions.cs