Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么asp.net core使用Endpoints context.Request.RouteValue[“key”无值_C#_Asp.net Core_Asp.net Core 3.1 - Fatal编程技术网

C# 为什么asp.net core使用Endpoints context.Request.RouteValue[“key”无值

C# 为什么asp.net core使用Endpoints context.Request.RouteValue[“key”无值,c#,asp.net-core,asp.net-core-3.1,C#,Asp.net Core,Asp.net Core 3.1,为什么asp.net core使用Endpoints context.Request.RouteValue[“key”]没有值 我的代码: app.UseEndpoints(endpoints => { endpoints.MapGet("/", async context => { var code = $&qu

为什么asp.net core使用Endpoints context.Request.RouteValue[“key”]没有值

我的代码:

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    var code = $"{context.Request.RouteValues["code"]}";
                    await context.Response.WriteAsync(code);
                });
            });

我的期望:
要获取asp.net核心,请使用Endpoints MapGet的
参数。e、 g:context.Request.RouteValues[“code”]获取值123

我尝试和追踪的内容:

测试1:
I debug
context.Request.QueryString
不为空,但RouteValue为空

我阅读了MSDN:
RouteValues=获取此请求的路由值集合。

        //
        // Summary:
        //     Gets the collection of route values for this request.
        //
        // Returns:
        //     The collection of route values for this request.
        public virtual RouteValueDictionary RouteValues
测试2: 我可以使用下面的代码来获取代码值,但它的格式是
https://localhost/123
https://localhost?code=123

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/{code:int}", async context =>
                {
                    var code = $"{context.Request.RouteValues["code"]}";
                    await context.Response.WriteAsync(code);
                });
            });

我得到的不是RouteValue,它必须使用
context.Request.Query

如下代码所示:

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    var code = context.Request.Query["code"]; //result : 123
             
                    await context.Response.WriteAsync(code);
                });
            });
RouteValue仅用于自定义映射url参数

和MSDN文件:

        //
        // Summary:
        //     Gets the query value collection parsed from Request.QueryString.
        //
        // Returns:
        //     The query value collection parsed from Request.QueryString.
        public abstract IQueryCollection Query
          {
               get;
               set;
          }