首页 > 解决方案 > 即使值为 null,StringValues 计数也显示 1

问题描述

我正在从QueryString我的 ASP.NET Core 应用程序中读取一个令牌,但我对某些事情感到困惑。

即使StringValuesnull值,它Count也显示 1 - 见下文。

在此处输入图像描述

我也试过StringValues.IsNullOrEmpty(token)了,也失败了。我如何可靠地检查其中是否StringValues真的有有用的数据?

更新:读取值的代码如下:

if(path.StartsWith("/im") && context.Request.Query.TryGetValue("access_token", out var token))
{
   context.Token = token;
}

我正在从我的客户端发送一个 access_token,如下所示:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/myhub?AUTHORIZATION=" + _token)
    .configureLogging(signalR.LogLevel.Information)
    .build();

标签: c#asp.netasp.net-core

解决方案


这种情况下的问题是,即使用户已登录,您也要附加 access_token。因此,当您访问它时,它的值为“null”,这是从客户端发送的。

您只需要有条件地附加值

if (accessToken) {
    hubUrl += '?authToken' +'=' + accessToken;
}

this._hubConnection = new HubConnectionBuilder()
                            .withUrl(hubUrl)
                            .build();

推荐阅读