【问题标题】:Cannot setup Nswag in my vb.net webapi project无法在我的 vb.net webapi 项目中设置 Nswag
【发布时间】:2021-03-26 08:00:47
【问题描述】:

我必须设置一个用 VB.NET 编写的 WebApi 项目(在 .NET Framework 4.6.1 中),并且我想设置 Nswag 和 Swagger 以便进一步实施。 我正在寻找该指南:enter link description here,我所有的 C# webapi 项目都运行良好

我正在尝试在 VB.NET 中进行设置,像这样转换代码:

Public Module WebApiConfig
Public Sub Register(ByVal config As HttpConfiguration)
    ' Servizi e configurazione dell'API Web

    ' Route dell'API Web
    config.MapHttpAttributeRoutes()

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

    config.MessageHandlers.Add(New TokenValidationHandler())

    Dim appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(Function(t) t.MediaType = "application/xml")
    config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType)

    RouteTable.Routes.MapOwinPath("swagger", Function(app)
                                                 app.UseSwaggerUi3(GetType(WebApiApplication).Assembly, Function(settings)
                                                                                                            settings.MiddlewareBasePath = "/swagger"
                                                                                                            settings.GeneratorSettings.DefaultUrlTemplate = "api/{controller}/{action}/{id}"
                                                                                                            settings.GeneratorSettings.OperationProcessors.Add(New OperationSecurityScopeProcessor("JWT Token"))
                                                                                                            settings.GeneratorSettings.DocumentProcessors.Add(New SecurityDefinitionAppender("JWT Token",
                                                                                                                                            New NSwag.OpenApiSecurityScheme With
                                                                                                                                            {
                                                                                                                                            .Type = NSwag.OpenApiSecuritySchemeType.ApiKey,
                                                                                                                                            .Name = "Authorization",
                                                                                                                                            .Description = "Copy 'Bearer ' + valid JWT token into field",
                                                                                                                                            .[In] = NSwag.OpenApiSecurityApiKeyLocation.Header
                                                                                                                                            }))
                                                                                                        End Function)
                                             End Function)
End Sub

结束模块

但是当我运行项目时会弹出那个错误:

No conversion available between VB$AnonymousDelegate_0`2[System.Object,System.Object] and System.Func`2[System.Collections.Generic.IDictionary`2[System.String,System.Object],System.Threading.Tasks.Task]. Parameter name: signature

在我的代码的第 28 行设置错误,对应于 RouteTable.Routes.MapOwinPath("swagger", Function(app)

有什么建议吗?

【问题讨论】:

    标签: vb.net swagger asp.net-web-api2 owin nswag


    【解决方案1】:

    我发现 VB.NET Lamba 函数必须指定它们返回的类型 像这样:

     RouteTable.Routes.MapOwinPath("swagger", Function(app) As Owin.IAppBuilder
                                                     Return app.UseSwaggerUi3(GetType(WebApiApplication).Assembly, Function(settings) As SwaggerUi3Settings(Of NSwag.Generation.WebApi.WebApiOpenApiDocumentGeneratorSettings)
                                                                                                                       settings.MiddlewareBasePath = "/swagger"
                                                                                                                       settings.GeneratorSettings.DefaultUrlTemplate = "api/{controller}/{action}/{id}"
                                                                                                                       settings.GeneratorSettings.OperationProcessors.Add(New OperationSecurityScopeProcessor("JWT Token"))
                                                                                                                       settings.GeneratorSettings.DocumentProcessors.Add(New SecurityDefinitionAppender("JWT Token",
                                                                                                                                                New NSwag.OpenApiSecurityScheme With
                                                                                                                                                {
                                                                                                                                                .Type = NSwag.OpenApiSecuritySchemeType.ApiKey,
                                                                                                                                                .Name = "Authorization",
                                                                                                                                                .Description = "Copy 'Bearer ' + valid JWT token into field",
                                                                                                                                                .[In] = NSwag.OpenApiSecurityApiKeyLocation.Header
                                                                                                                                                }))
    
                                                                                                                       Return settings
                                                                                                                   End Function)
                                                 End Function)
    

    注意我添加了 As Owin.IAppBuilder 和 As SwaggerUi3Settings(Of NSwag.Generation.WebApi.WebApiOpenApiDocumentGeneratorSettings)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-06
      • 1970-01-01
      • 2018-09-26
      • 2019-01-17
      • 2018-05-18
      • 1970-01-01
      • 2015-10-08
      • 2022-11-19
      相关资源
      最近更新 更多