【发布时间】:2018-03-21 18:04:14
【问题描述】:
我有 ASP MVC 5 项目,我在其中添加了 Web Api。现在我正在尝试安装 Swashbuckle(从引导程序) - 但它只显示一个没有任何控制器的空文档。
我的控制器:
[RoutePrefix("api/v1/Test/Check")]
public class TestController : ApiController
{
// GET: api/Test
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET: api/Test/5
[HttpGet]
public string Get(int id)
{
return "value";
}
// POST: api/Test
[HttpPost]
public void Post([FromBody]string value)
{
}
// PUT: api/Test/5
[HttpPut]
public void Put(int id, [FromBody]string value)
{
}
// DELETE: api/Test/5
[HttpDelete]
public void Delete(int id)
{
}
// GET: api/Test
[Route("GetMetadata")]
[HttpGet]
public IEnumerable<string> GetMetadata()
{
return new string[] { "value2221", "value2" };
}
}
我的网络 API 配置:
configuration.MapHttpAttributeRoutes();
configuration.Routes.MapHttpRoute("Public API V1", "api/v1/{controller}/{id}",
new { id = RouteParameter.Optional });
我的Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
//WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
Swashbuckle 是默认配置。
生成的 swagger 文档如下所示:
{
swagger: "2.0",
info: {
version: "v1",
title: "WebServer"
},
host: "localhost:55309",
schemes: [
"http"
],
paths: { },
definitions: { }
}
我可以通过http://localhost:55309/api/v1/Test访问我的控制器
我不确定是否需要更改生成的 SwaggerConfig.cs 中的任何内容,但查看它并在 swashbuckle 文档上看起来它应该无需任何修改即可工作
【问题讨论】:
-
你必须在你的方法上放置适当的属性,比如 HttpPost , HttpGet。试试这个
-
@osmanRahimi 不幸的是没有任何区别。还是不行
-
@Archeg 请向我们展示您使用这些属性的尝试。对于我们看不到的东西,我们无能为力。
-
我认为您的问题是“ASP MVC 5 项目”尝试使用新的默认 WebApi 项目并添加 swashbuckle
-
@HelderSepu 可能是,但我需要 ASP MVC 5 + Web Api,所以这是不行的。如果我在单独的仅 Web Api 项目上执行此操作,它会起作用
标签: c# asp.net-web-api swashbuckle