ASP.NET Core奇怪的URL解析。单个查询字符串参数。
创始人
2024-09-15 22:30:24
0

在ASP.NET Core中,URL解析的方式可能会导致一些奇怪的行为,尤其是在解析单个查询字符串参数时。以下是一个解决这个问题的示例代码:

// Startup.cs
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseRouting();

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

// ValuesController.cs
[ApiController]
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
    [HttpGet]
    public ActionResult Get([FromQuery]string param)
    {
        // 处理查询字符串参数
        return Ok(param);
    }
}

在这个示例中,我们创建了一个名为ValuesController的控制器,其中包含一个带有一个名为param的查询字符串参数的Get方法。

当我们使用以下URL进行GET请求时:api/values?param=test%20value,控制器将正确地解析查询字符串参数,并将其值返回为"test value"。

但是,如果我们使用以下URL进行GET请求:api/values?param=test+value,控制器将错误地解析查询字符串参数,并将其值返回为"test value",而不是我们期望的"test+value"。这是因为ASP.NET Core默认情况下将"+"解析为空格。

为了解决这个问题,我们可以使用Microsoft.AspNetCore.WebUtilities.QueryHelpers类中的ParseQuery方法来手动解析查询字符串参数,如下所示:

using Microsoft.AspNetCore.WebUtilities;

// ValuesController.cs
[ApiController]
[Route("api/[controller]")]
public class ValuesController : ControllerBase
{
    [HttpGet]
    public ActionResult Get()
    {
        var query = HttpContext.Request.QueryString;
        var parsedQuery = QueryHelpers.ParseQuery(query.Value);
        var param = parsedQuery["param"];

        // 处理查询字符串参数
        return Ok(param);
    }
}

通过使用QueryHelpers.ParseQuery方法,我们可以正确地解析查询字符串参数,并将其值返回为"test+value"。

相关内容

热门资讯

必备攻略“wpk到底有没有辅助... 无需打开直接搜索加微信客服(136704302)咨询了解wpk到底有没有辅助挂辅助器目前(微信:13...
发现一款“wepoker发牌逻... 发现一款“wepoker发牌逻辑”开挂辅助安装(透视)辅助教程是一款可以让一直输的玩家,快速成为一个...
玩家必知教程“wepoker发... 您好:wepoker发牌算法的软件,软件加客服确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户...
盘点一款“wepoker如何拿... 盘点一款“wepoker如何拿到好牌”开挂辅助挂(透视)2026新版教程是一款可以让一直输的玩家,快...
科技介绍“微扑克辅助器app下... 科技介绍“微扑克辅助器app下载”开挂辅助平台(透视)德州论坛是一款可以让一直输的玩家,快速成为一个...
一分钟了解“wepoker辅助... 您好:wepoker辅助透视挂的软件,软件加客服确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用...
分辨真假“wepoker透视真... 无需打开直接搜索加微信客服(136704302)咨询了解wepoker透视真的吗辅助器目前(微信:1...
推荐一款“wepoker透视软... 推荐一款“wepoker透视软件挂教程”开挂辅助安装(透视)必备教程是一款可以让一直输的玩家,快速成...
盘点几款“wepoker辅助开... >>>您好:,软件加微信【添加136704302】确实是有挂的,很多玩家在这款游戏中打牌都会发现很多...
一分钟揭秘“WePoKer有没... 无需打开直接搜索;操作使用教程:一分钟揭秘“WePoKer有没有透视软件挂”开挂辅助挂(透视)曝光教...