VB.Net-将WebApi 5添加到现有的MVC 5网站

时间:2019-01-02 16:45:28

标签: asp.net asp.net-mvc vb.net asp.net-web-api

我有一个现有的VB MVC5网站,我正在尝试添加WebApi。

我正在关注本教程:Adding Web API Support to an Existing ASP.NET MVC Project

教程示例使用C#,因此我一直在转换为VB。

我正在执行步骤2.2,添加了Global.asax配置更改,但出现错误:

  

未为“公共子寄存器(配置为HttpConfiguration)”的参数“ Config”指定参数。

这是我拥有的App_Start \ WebApiConfig.vb:

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Http

Namespace myProjectName.App_Start
    Public Module WebApiConfig
        Public Sub Register(ByVal config As HttpConfiguration)

            ' Web API routes
            config.MapHttpAttributeRoutes()

            config.Routes.MapHttpRoute(
                name:="DefaultApi",
                routeTemplate:="api/{controller}/{action}/{id}",
                defaults:=New With {.id = RouteParameter.Optional}
            )
        End Sub
    End Module
End Namespace

这就是我对Global.asax.vb的要求:

Imports System
Imports System.Web.Http
Imports System.Web.Optimization
Imports System.Web.Security
Imports System.Web.SessionState
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Mvc
Imports System.Web.Routing
Imports mySolutionName.myProjectName.App_Start

Public Class MvcApplication
    Inherits System.Web.HttpApplication

    Protected Sub Application_Start()
        AreaRegistration.RegisterAllAreas()
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
        GlobalConfiguration.Configure(WebApiConfig.Register) '// <-- Error here
        RouteConfig.RegisterRoutes(RouteTable.Routes)
        BundleConfig.RegisterBundles(BundleTable.Bundles)
    End Sub
End Class

1 个答案:

答案 0 :(得分:2)

在C#中,WebApiConfig.Register(不带括号)将方法本身作为委托传递。 WebApiConfig.Register()将调用该方法并将其结果传递给外部函数。

在VB中,WebApiConfig.Register(带或不带括号)将始终调用该方法。要将方法本身作为委托传递,您需要使用AddressOf

GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)