这里是脚手架并进行了编辑的控制器。
namespace TheAspNetCoreProject
{
[Route("api/TheApi")]
[ApiController]
public class TheApiController : ControllerBase
{
[HttpGet]
public IActionResult GetInfo()
{
return Ok("Foo");
}
}
}
我希望在/api/TheApi/
或/api/TheApi/Info
或/api/TheApi/GetInfo
看到它,但什么也没有。
[Startup.cs
,脚手架没有做任何事情,但是docs中没有提到例如Startup.cs
中需要任何东西,这听起来不太可能。
我该如何使用它?
我刚刚启动了VS,并从模板创建了一个新的.net核心Web Api项目,它可以按您期望的方式工作:
[ApiController]
[Route("api/TheApi")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
[HttpGet("OtherGet")]
public IEnumerable<WeatherForecast> OtherGet()
{
var rng = new Random();
return Enumerable.Range(1, 2).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
有效网址:
Startup.cs看起来像这样:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
[经过很多非常不愉快的尝试和错误之后,我现在可以报告确实确实需要更新Startup.cs
-支架webAPI控制器尚未更新它。
在我的位置>
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IServiceProvider serviceProvider)
我有
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); });
并且需要更改为
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers(); // Added for webAPI.
});
默认情况下,Web API路由的定义如下:api/{controller}
。请注意,不存在{action}
。