解释ASP.NET WebAPI HttpRoute管道

解释ASP.NET WebAPI HttpRoute管道,asp.net,asp.net-web-api,asp.net-4.5,asp.net-web-api-routing,Asp.net,Asp.net Web Api,Asp.net 4.5,Asp.net Web Api Routing,我是一名长期服务于ASP.NETVBWebForms的程序员,但需要开始使用WebAPI来创建一个简单的服务。我遵循了上的PluralSight教程,并有以下两个片段: HelloApiController.vb Imports System.Web.Http Namespace HelloWebApiDemo Public Class HelloApiController Inherits ApiController Public Function

我是一名长期服务于ASP.NETVBWebForms的程序员,但需要开始使用WebAPI来创建一个简单的服务。我遵循了上的PluralSight教程,并有以下两个片段:

HelloApiController.vb

Imports System.Web.Http

Namespace HelloWebApiDemo

    Public Class HelloApiController
        Inherits ApiController

        Public Function [Get]()
            Return "Hello from API at " & DateTime.Now.ToString
        End Function

    End Class

End Namespace
Imports System.Web.Http
Imports System.Web.Http.Routing

Public Class Global_asax
    Inherits System.Web.HttpApplication

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

End Class
Global.asax.vb

Imports System.Web.Http

Namespace HelloWebApiDemo

    Public Class HelloApiController
        Inherits ApiController

        Public Function [Get]()
            Return "Hello from API at " & DateTime.Now.ToString
        End Function

    End Class

End Namespace
Imports System.Web.Http
Imports System.Web.Http.Routing

Public Class Global_asax
    Inherits System.Web.HttpApplication

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

End Class
运行时,用于检索信息的URL为:
http://localhost:63678/helloapi

谁能解释一下
“{controller}”
是如何自动映射到上述URL的?我在代码中的任何地方都看不到单词
helloapi
。如果我创建了第二个继承了ApiController的类怎么办?IIS如何区分我想要访问的类

另外,方法名
[Get]()
是否自动映射到相应的HTTP谓词?再说一次,如果我想给它起个不同的名字会怎么样


谢谢。

web API的一大优点是它按惯例工作。Web API能够使用URI路径映射到类名前缀(不包括控制器)的约定,将GET请求路由到
HelloapicController
。如果您有另一个控制器,例如
FooController
,则
http://server/foo
是击中第二个控制器所需的


至于方法名,它使用HTTP谓词。默认情况下,
Get
的方法名和以
Get
开头的方法名(如
GetFoo
)映射到HTTP Get,以此类推。这是可以改变的。路由的概念非常强大,这里无法通过答案来解释。我强烈推荐Mike Wasson在ASP.NET网站上的入门内容。退房和其他的东西

好的,非常感谢你的澄清。我看过Mike Wasson的教程,但没有看到,因为我们不需要网页本身,因为我们不需要界面,所以我想避免学习MVC,如果可能的话,只关注API。只有将XML发布到API的自动数据导出系统才能访问API。欢迎您推荐任何其他教程…:-)还有什么关于实际的
“{controller}”
代码我能读懂的吗。谷歌搜索几乎毫无用处,因为它是一个如此普通的词。