我创建了一个全新的 Asp.net Core 2.2 Web api 应用程序。 然后我如下配置 Swagger。 在启动文件的ConfigureServices方法中我有以下内容。
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Title = "My API", Version = "v1"
});
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
接下来在配置方法中,我有,
if (env.IsDevelopment())
app.UseDeveloperExceptionPage();
else
app.UseHsts();
app.UseSwagger();
app.UseHttpsRedirection();
app.UseMvc();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.RoutePrefix = string.Empty;
});
到目前为止一切顺利。 Swagger UI 运行得非常棒。 当我引入一个简单的 MVC 控制器时,问题就开始了。
[Route("[controller]/[action]")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
我收到以下错误
无法加载 API 定义 错误 获取错误 内部服务器错误 /swagger/v1/swagger.json
Swagger 似乎不接受 Asp.net core mvc 控制器。如果我注释掉 mvc 控制器,一切都会恢复正常。
有没有办法解决这个问题。
尝试用 http 动词表示法装饰控制器中的方法:
[Route("[controller]/[action]")]
public class HomeController : Controller
{
[HttpGet, Route("myRoute")]
public IActionResult Index()
{
return View();
}
}
如果您不想放置路由,只需使用 [HttpGet] 表示法即可解决问题。
您的文档未导入。
假设您的项目是 github.com/deepaksinghvi/catalogwf 并且 docs 文件夹位于其中。
尝试按如下方式导入您的文档,它会起作用
_ "github.com/deepaksinghvi/catalogwf/docs"
如果根路径
go.mod
中的项目模块名称是module my-work/my-go-project
,
写这个
import _ "my-work/my-go-project/docs"