我有一个现有的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
答案 0 :(得分:2)
在C#中,WebApiConfig.Register
(不带括号)将方法本身作为委托传递。 WebApiConfig.Register()
将调用该方法并将其结果传递给外部函数。
在VB中,WebApiConfig.Register
(带或不带括号)将始终调用该方法。要将方法本身作为委托传递,您需要使用AddressOf
:
GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)