当前位置: 首页 > 知识库问答 >
问题:

swagger找不到ASP NET核心项目中从程序集加载的控制器

越朗
2023-03-14

我有一个asp.NET核心控制台项目,它正在使用ApplicationPart加载API程序集。我需要添加swagger来公开API,但是当我将Swashbuckle安装到控制台项目并在startup类中配置swagger时,如果我导航到swagger UI,什么也找不到。它返回401错误。

services.AddMvc
.AddApplicationPart(WebApi.GetAssembly()).AddControllersAsServices();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1"});
});
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});

我可以很好地调用控制器上的操作,但似乎Swashbuckle没有为它生成任何昂首阔步。我是错过了什么还是还不支持?任何建议都将不胜感激!

共有1个答案

钮刚洁
2023-03-14

当我不使用Swagger时,在我的上下文中,我遇到了类似的问题,所以我确保手动加载控制器:

    public void ConfigureServices(IServiceCollection Services)
    {
        // find all controllers
        var Controllers =
            from a in AppDomain.CurrentDomain.GetAssemblies().AsParallel()
            from t in a.GetTypes()
            let attributes = t.GetCustomAttributes(typeof(ControllerAttribute), true)
            where attributes?.Length > 0
            select new { Type = t };

        var ControllersList = Controllers.ToList();
        Logging.Info($"Found {ControllersList.Count} controllers");

        // register them
        foreach (var Controller in ControllersList)
        {
            Logging.Info($"[Controller] Registering {Controller.Type.Name}");
            Services
                .AddMvc()
                .AddJsonOptions(Options => Options.SerializerSettings.ContractResolver = new DefaultContractResolver())
                .AddApplicationPart(Controller.Type.Assembly);
        }

在init中有了这一点,控制器就可以正确地添加和初始化

 类似资料:
  • 我正在做一个我命名为“主项目”的项目。我至少有10个不同的小项目在那里,这个项目可能会增长。我对所有这些项目只有一个自信,因为所有这些项目都只使用一个dotnet核心web应用程序来进行推广。 例如,假设我有一个名为的项目和一个名为的项目。有三个不同的endpoint,分别名为、、、和。这两个不同的项目将出现在一个大摇大摆的UI中,如下所示: 我想做的是在一个dotnet核心web项目中设置多个不

  • 我正在开发一个社交网络应用程序。我遇到了一个问题,我试图从数据库中名为用户的表中获取名称和用户名。为了能够做到这一点,而无需单独访问所有控制器,我必须创建一个名为MY_Controller的核心控制器。 问题是(MY_Controller没有公共$用户): 如您所见,我使用__construct函数加载了User_model,使其可用并在所有控制器中使用。 我想在名为templates的文件夹中获

  • 我有一个<代码>。NET Core项目我试图运行Fortify扫描。据我所知,目前还没有VS2017 Fortify插件可用,但我很好奇是否可以使用围绕插件工作,仍然执行Fortify扫描?如果是这样,我怎么能把它合并到我的清洁、翻译和扫描命令中? 当前Fortify版本:

  • 我正在尝试运行以下powerShell脚本,以便使用Fortify扫描我的解决方案(.NET Core 2.0): 在我的本地机器上一切都很好。 但当我试图在服务器上运行它作为TeamCity(TeamCity Enterprise 2018.2.1(build 61078))中的构建步骤时,我遇到了一个错误: 我在本地和服务器中使用相同版本的Fortify(Fortify静态代码分析器17.20

  • 知道如何正确设置控制器描述吗? 谢谢,马里奥