在我的net core api应用程序中,所有控制器都继承自基本控制器。
因此,大摇大摆不起作用。
我使用Visual Studio创建了一个示例项目,并且敏捷地工作正常
但是,当我创建一个从ControllerBase继承的基类(Test.cs),并且将ValuesController.cs更改为从Test而不是ControllerBase继承时,大摇大摆不起作用。
我得到了错误
无法加载API定义。 提取错误未定义的/swagger/v1/swagger.json
谢谢您的帮助!
这是我的代码:
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "Test", Version = "v1" });
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.XML";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
c.IncludeXmlComments(xmlPath);
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseMvc();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("swagger.json", "Test");
});
}
Test.cs
using Microsoft.AspNetCore.Mvc;
namespace WebApplication6.Controllers
{
public class Test : ControllerBase
{
public void MyTest()
{
}
}
}
ValuesController.cs
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
namespace WebApplication6.Controllers
{
[Route("api/[controller]")]
[ApiController]
// This works
// public class ValuesController : ControllerBase
// This doesn't works
public class ValuesController : Test
{
/// <summary>
/// Test
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
}
}
答案 0 :(得分:0)
我解决了更改基类Test.cs的问题
public void MyTest()
到
protected void MyTest()