.net core 3.1:剃须刀页面和 API 控制器的端点路由
.net core 3.1: Endpoint routing for razor pages AND API controllers
**编辑 - 添加查询字符串
我已经将 Core 2.2 站点升级到 3.1,唯一仍然困扰我的问题如下:我在同一个应用程序中有常规的 Razor 页面和 API 控制器 - 共享代码和功能使它成为一个简单的解决方案。在 2.2 中,以下路由设置没有问题:
services.AddMvc()
和
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
分别在Startup.ConfigureServices
和Startup.Configure
中。
我的控制器看起来像:
{
[Route("api/[controller][")]
[Produces("application/json")]
[ApiController]
public class RRateController : ControllerBase
{
public RRateController()
{
}
[HttpGet]
public async Task<clsObject> Get([FromQuery] string[] TopCodes)
{
clsObject obj = new clsObject();
...
return obj;
}
}
使用查询字符串调用控制器:
Root + '/API/RRate?TopCodes=Val1&TopCodes=Val2'
正在升级到.net core 3.1,我正在使用
services.AddControllers();
services.AddRazorPages();
和
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
};
在 ConfigureServices
和 Configure
中。
我的问题是 TopCodes
的字符串数组没有传递到控制器中。访问了控制器,但数组为空。没有参数的类似控制器在新设置下工作正常。
我应该如何配置端点以与具有 Controller\Action\parameter 模式的 Razor 页面以及 API 控制器一起工作?
api/[controller][
中的 [
是故意的吗?不应该是api/[controller]
吗?
**编辑 - 添加查询字符串
我已经将 Core 2.2 站点升级到 3.1,唯一仍然困扰我的问题如下:我在同一个应用程序中有常规的 Razor 页面和 API 控制器 - 共享代码和功能使它成为一个简单的解决方案。在 2.2 中,以下路由设置没有问题:
services.AddMvc()
和
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
分别在Startup.ConfigureServices
和Startup.Configure
中。
我的控制器看起来像:
{
[Route("api/[controller][")]
[Produces("application/json")]
[ApiController]
public class RRateController : ControllerBase
{
public RRateController()
{
}
[HttpGet]
public async Task<clsObject> Get([FromQuery] string[] TopCodes)
{
clsObject obj = new clsObject();
...
return obj;
}
}
使用查询字符串调用控制器:
Root + '/API/RRate?TopCodes=Val1&TopCodes=Val2'
正在升级到.net core 3.1,我正在使用
services.AddControllers();
services.AddRazorPages();
和
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
endpoints.MapControllers();
};
在 ConfigureServices
和 Configure
中。
我的问题是 TopCodes
的字符串数组没有传递到控制器中。访问了控制器,但数组为空。没有参数的类似控制器在新设置下工作正常。
我应该如何配置端点以与具有 Controller\Action\parameter 模式的 Razor 页面以及 API 控制器一起工作?
api/[controller][
中的 [
是故意的吗?不应该是api/[controller]
吗?