VB.Net - Добавление WebApi 5 на существующий сайт MVC 5 - PullRequest
0 голосов
/ 02 января 2019

У меня есть сайт VB MVC5, и я пытаюсь добавить WebApi.

Я следую этому руководству: Добавление поддержки веб-API в существующий проект ASP.NET MVC

В учебных примерах используется C #, поэтому я конвертирую в VB.

Я на шаге 2.2, добавляю изменения конфигурации Global.asax , но получаю сообщение об ошибке:

Аргумент не указан для параметра 'Config' в 'Public Sub Register (config As HttpConfiguration)'.

Это то, что у меня есть для 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 голосов
/ 02 января 2019

В C #, WebApiConfig.Register без завершающих скобок, передает сам метод в качестве делегата. WebApiConfig.Register() вызовет метод и передаст его результат внешней функции.

В VB WebApiConfig.Register с круглыми скобками или без них всегда будет вызывать метод. Чтобы передать сам метод в качестве делегата, вам нужно использовать AddressOf:

GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...