小编sha*_*haf的帖子

signalr不在特定的isp网络上工作

我正在使用ASP.NET MVC 4和SignalR 2.1.1.我的网站适用于所有浏览器中的大多数用户,但只有特定isp网络上的特定用户才会出现错误.

错误是这样的:

The connection to ws://domain.com/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=78ZpJ007jmlLSBbVzDVbfpYahHsveD3x8%2Bc5PC9h%2FgeOz5zNgE8SaKWaQAasGNLe%2BvJeI6ux6IqW0E8WQWqP6Ps%2FXjc8WPbG7G47oHSxRSx7nVj0leVa1DdXzEXnLQ%2BA&connectionData=%5B%7B%22name%22%3A%22homehub%22%7D%5D&tid=4 was interrupted while the page was loading.
Run Code Online (Sandbox Code Playgroud)

对于收到此错误的相同用户,使用其他网络(同一浏览器/计算机/手机)登录Internet可解决此问题.

到目前为止,我只看到有关此错误的问题,将问题指向浏览器,但在我的情况下,使用具有不同网络的相同浏览器可以解决问题.

任何人都知道如何解决这个问题吗?

更新1: 我注意到客户端方法确实有效,这是服务器方法不起作用.

我是什么意思?:

我有一个在线用户列表,当用户进入和退出网站时,会调用更新用户名列表的信号器客户端方法:

hub.client.addOnlineMember = function (member) {
    var newMember = addMember(member);
    memberList.append(newMember);
};
hub.client.removeOnlineMember = function (member) {
    var newMemberId = '#' + member;
    $(memberListName + ' ' + newMemberId).remove();
};
Run Code Online (Sandbox Code Playgroud)

但是,当尝试从服务器加载消息时,它的功能不起作用:

$('#LoadMore').click(function () {
        hub.server.loadTopics(page);
    });
Run Code Online (Sandbox Code Playgroud)

更新2: 我添加了日志记录:

$.connection.hub.logging = true;
Run Code Online (Sandbox Code Playgroud)

以下是调查结果:

The connection to ws://domain.com/signalr/connect?transport=webSockets&clientProtocol=1.4&connectionToken=rR8%2BSK%2BC%2FtuzPqIGKgPrUNORzBz2kP0WUmXJsURP70Zsj6RK1fOi5tUN1UGEQPntGwoEvwinMkPCXRTyliLwzfLoOBl%2BkCWoBAkAqIFYaDVk3X1MG8dQERl8Or%2F4%2Filp&connectionData=%5B%7B%22name%22%3A%22hub%22%7D%5D&tid=6 was interrupted while the page was loading. jquery.signalr-2.1.1.min.js:8
Synchronous XMLHttpRequest on the …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-4 signalr

11
推荐指数
1
解决办法
1436
查看次数

在 .net core 中设置全球时区

在 .Net Core 2 中 -

有没有办法全局设置应用程序的时区,以便每当我请求时,DateTime.Now我都会获得我想要的时区的当前时间(比如 GMT+3),而不是托管应用程序的服务器的时间?

我认为有一个配置的好地方是 Startup.cs 文件,但我的搜索查询让我无处可去。

c# timezone datetime .net-core asp.net-core

7
推荐指数
2
解决办法
1万
查看次数

前端框架领域的身份验证

我的问题是关于今天\xe2\x80\x99s前端世界的登录:

\n\n

在服务器端渲染的旧方法中 - 我将在后端验证用户登录并渲染适合登录用户的整个 html 页面。

\n\n

但现在有了前端框架 - 我在用户第一次进入网站时为他提供所有可能的页面,然后在他的浏览器中为他呈现正确的页面。

\n\n

据我现在的理解 - 要在前端框架中登录用户,我需要在 localStorage 中保存一个变量,表明他已通过身份验证(甚至可能是他在管理员情况下的角色),这样当 i\xe2 时\x80\x99m 构建页面我只需要询问这个变量是否在 localStorage 中即可知道用户是否已登录,以及他的角色是否是管理员,如果两者都为真,我向他展示所有管理功能

\n\n

然而,这意味着如果我是一名黑客 - 我所需要做的就是手动将此变量添加到我的 localStorage 中,然后 i\xe2\x80\x99 将看到整个管理功能。

\n\n

这让我想到了我的问题 -\在当今\xe2\x80\x99的前端世界中是否有更好的方法来执行登录身份验证?\我也没有义务让黑客看到所有管理功能,并且只能保护它们不被未经授权的用户仅在后端使用?

\n

authentication frontend angular

5
推荐指数
1
解决办法
758
查看次数

switch 内的表达式被调用了多少次

给定一个像这样的 switch 语句:

switch(text.toLowerCase()) {
    case("aaa"):
        doSomething();
        return;
    case("bbb"):
        doSomething();
        return;
    case("ccc"):
        doSomething();
        return;
    default:
        return;
}
Run Code Online (Sandbox Code Playgroud)

开关本身内的表达式被调用多少次?

  • 它会在检查的每种情况下调用 toLowerCase() (这意味着最好将此表达式插入到该 switch case 之前的变量中,并在 switch 内使用该变量)

  • 或者它会计算 toLowerCase() 一次并为所有情况使用最终表达式的值?

javascript switch-statement

1
推荐指数
1
解决办法
472
查看次数