簡體   English   中英

.net 核心 3.1:razor 頁面和 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.ConfigureServicesStartup.Configure中。

我的 controller 看起來像:

{
    [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;
        }
}

使用查詢字符串調用 controller:

Root + '/API/RRate?TopCodes=Val1&TopCodes=Val2'

升級到.net核心3.1,我正在使用

    services.AddControllers();
    services.AddRazorPages();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapRazorPages();
        endpoints.MapControllers();
    };

ConfigureServicesConfigure中。

我的問題是TopCodes的字符串數組沒有傳遞到 controller 中。 訪問了 controller 但數組為空。 沒有參數的類似 controller 在新設置下工作正常。

我應該如何配置端點以與具有 Controller\Action\parameter 模式的 Razor 頁面和 API 控制器一起使用?

api/[controller][ [的 [ 是故意的嗎? 不應該是api/[controller]嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM