QueryString.Add 不向 ASP.NET Core 中的请求查询字符串添加值

Posted

技术标签:

【中文标题】QueryString.Add 不向 ASP.NET Core 中的请求查询字符串添加值【英文标题】:QueryString.Add not adding value to the Request query strings in ASP.NET Core 【发布时间】:2019-08-02 17:47:39 【问题描述】:

我正在编写一个中间件,我想在其中修改当前请求的查询字符串值,但我无法做到这一点。 afaik QueryString.Add 方法应该可以工作,但它不会影响查询字符串。这是我尝试过的。

public async Task Invoke(HttpContext context, IHeaderValue headerValue, IUser user)

    var result = context.Request.Headers["Authorization"];

    if (result.Count != 0)
    

        headerValue.UserId = this.GetUserIdFromToken(result[0]);

        var request = context.Request;

        if (request.Method == "GET")
        
            // It should be adding the new query value to the QueryString collection
            // but it doesn't
            request.QueryString.Add("CurrentUserId", headerValue.UserId.ToString());
        
    

我将非常感谢任何帮助。

【问题讨论】:

QueryString.Add的返回值 哦,是的!感谢一吨州!!!!我这样做了,它有效。 request.QueryString = request.QueryString.Add("CurrentUserId", headerValue.UserId.ToString()); 请将此作为答案发布,以便更多人获得帮助。 【参考方案1】:

QueryString.Add 返回一个包含给定名称和值的新 QueryString。它不会改变调用它的QueryString

所以你需要做类似的事情

request.QueryString = request.QueryString.Add("A", "B");

【讨论】:

以上是关于QueryString.Add 不向 ASP.NET Core 中的请求查询字符串添加值的主要内容,如果未能解决你的问题,请参考以下文章

win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:WindowsMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NE

WebApi调用通用方法

不向 rethinkdb 插入数据

理解ASP.NET Core

为啥 switch 语句不向应用返回信息? [关闭]

notifyListeners() 不向 UI 返回数据