AccessToken不得超过4K

时间:2019-06-26 09:29:17

标签: asp.net-mvc signalr azure-signalr

我已使用Azure SignalR服务。对于测试项目,它工作正常,但是当我嵌入到我的真实项目中时。引发错误(访问令牌不得超过4K)。

访问令牌不得超过4K。 413请求实体太大

我们在项目中使用了SignalR,现在我们正在转向Azure SignalR服务。 我在使用Azure SignalR服务的地方做了一个测试项目,在那儿工作得很好,但是我将其嵌入到我的真实项目中会引发错误(访问令牌不得超过4K)。 我在IIS和web.config级别尝试了不同的解决方案,增加了消息大小,但没有任何效果。 我已检查我的Cookie大小是否小于1k。 无法建立Azure SignalR服务的连接。 为什么它在测试项目中起作用。这意味着它包含了在实际项目中存在于我页面上的Cookie和页面声明。

我知道了这个东西,但是由于它的核心示例,它在Asp.net中不起作用。

services.AddSignalR()
        .AddAzureSignalR(options =>
            {
                options.ClaimsProvider = context => context.User.Claims;
            });

我已经尝试在web.config中进行绑定,但是增加消息的大小是行不通的,因为它的标题级别。

<bindings>
      <basicHttpBinding>
        <binding name="basicHttpBinding" maxReceivedMessageSize="524288000"/>
        <binding name="mexHttpBinding" maxReceivedMessageSize="524288000" />
      </basicHttpBinding>
</bindings>

2 个答案:

答案 0 :(得分:1)

我有原因。 它的索赔问题。我的真实项目有很多要求,因为我的要求超出了4k的限制。 我使用了压缩功能,因此一切正常。 谢谢

答案 1 :(得分:1)

对于ASP.NET,如果您的集线器没有基于角色的身份验证之类的高级身份验证,则可以使用以下内容简单地声明为空。

app.MapAzureSignalR(GetType().FullName
                    , options => options.ClaimsProvider = context => new Claim[] {});