我正在尝试使用Swashbuckle将Swagger UI集成到我的ASP.Net MVC项目中,并且Swashbuckle遇到无法识别我的任何控制器/端点的问题。

为简单起见,我使用单个控制器创建了一个全新的项目,如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace TestAPI.Controllers
{
    public class HomeController : Controller
    {
        [Route("Home")]
        [HttpGet]
        public ActionResult Index()
        {
            return View();
        }

        [Route("Home/About")]
        [HttpGet]
        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        [Route("Home/Contact")]
        [HttpGet]
        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
   }
}


我使用Nuget使用以下命令添加Swashbuckle:

Install-Package Swashbuckle


我保留了整个项目以及Swashbuckle本身的所有默认配置(使用生成的文件SwaggerConfig.cs)

当我导航到Swagger端点时,我被一个空的Swagger定义所欢迎,并且没有任何控制器/端点出现。

Empty Swagger Definition

我不知如何显示我的控制器/端点。所有Swashbuckle演示都使该基本配置看起来至少会使端点显示。

谢谢!

编辑:以下是我的SwaggerConfig.cs

using System.Web.Http;
using WebActivatorEx;
using TestAPI;
using Swashbuckle.Application;

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace TestAPI
{
    public class SwaggerConfig
    {
        public static void Register()
        {
            var thisAssembly = typeof(SwaggerConfig).Assembly;

            GlobalConfiguration.Configuration
            .EnableSwagger(c =>
            {
                c.SingleApiVersion("v1", "TestAPI");
            })
            .EnableSwaggerUi();
        }
    }
}

最佳答案

该问题的答案是Swashbuckle不适用于ASP.Net MVC。不幸的是,Swashbuckle不是解决此问题的合适方法。我最终结合使用了反射和XML注释创建了一个自定义解决方案。

关于c# - ASP.Net MVC-Swashbuckle无法识别任何 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54509667/

10-13 03:22