**编辑-添加查询字符串
我已经将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控制器一起使用?
答案 0 :(得分:2)
[
中的api/[controller][
是故意的吗?不是api/[controller]
吗?