我正在使用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) 在 .Net Core 2 中 -
有没有办法全局设置应用程序的时区,以便每当我请求时,DateTime.Now
我都会获得我想要的时区的当前时间(比如 GMT+3),而不是托管应用程序的服务器的时间?
我认为有一个配置的好地方是 Startup.cs 文件,但我的搜索查询让我无处可去。
我的问题是关于今天\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给定一个像这样的 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() 一次并为所有情况使用最终表达式的值?
.net-core ×1
angular ×1
asp.net ×1
asp.net-core ×1
c# ×1
datetime ×1
frontend ×1
javascript ×1
signalr ×1
timezone ×1