C# 为什么asp.net core使用Endpoints context.Request.RouteValue[“key”无值
为什么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
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;
}