我已使用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>
答案 0 :(得分:1)
我有原因。 它的索赔问题。我的真实项目有很多要求,因为我的要求超出了4k的限制。 我使用了压缩功能,因此一切正常。 谢谢
答案 1 :(得分:1)
对于ASP.NET,如果您的集线器没有基于角色的身份验证之类的高级身份验证,则可以使用以下内容简单地声明为空。
app.MapAzureSignalR(GetType().FullName
, options => options.ClaimsProvider = context => new Claim[] {});