我正在使用SignalR的Asp .Net 4.0框架上的Web应用程序,从Nuget包安装它.当我调试或运行应用程序而不在本地调试时,它可以正常工作.但是,当它部署到生产服务器时,它无法找到signal/hubs动态注入httphandlers的文件.由于它的动态特性,它必须在运行中创建,因此我不能将工作文件复制到项目中.
我尝试了以下加载文件的方法:
<script src="/signalr/hubs" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
并在代码背后:
ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("~/signalr/hubs"));
Run Code Online (Sandbox Code Playgroud)
所有这些都在本地工作,但不在服务器上.在html中呈现的路径看起来是正确的,但那里没有文件,传递404错误.如果重要,服务器已将应用程序设置为完全信任,并且该应用程序将作为IIS中使用子域的另一个站点下的应用程序运行.
我在ASP.Net Web应用程序项目中使用SignalR并遇到问题.我的目标是在站点的管理方面进行任何更改,导致一些GridViews刷新.我计划通过发送一些javascript的信号来运行,从而刷新包含GridViews的更新面板.
现在的问题是我无法获得我的集线器试图调用以在客户端执行的任何代码.我从jquery.SignalR.js文件中收到FireBug中的以下错误,但我不知道如何继续修复它:
Firefox can't establish a connection to the server at ws://localhost:40068/signalr?data=[]&transport=webSockets&clientId=92e4f7b9-0118-4fd9-bb55-5f22338d6162.
(function(n,t){"use strict";if(typeof ...on=n.signalR=i})(window.jQuery,window)
Run Code Online (Sandbox Code Playgroud)
抛出此错误后,它仍然看起来正在设置连接,但是没有通过集线器发送的javascript被执行
我在我的网站中设置了以下中心:
namespace testProject
{
public class statusChanges : Hub
{
public void ServerChange()
{
Clients.serverChange();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在管理部分的按钮点击事件中有以下代码.调试显示此代码由服务器运行:
var clients = Hub.GetClients<statusChanges>();
clients.serverChange();
Run Code Online (Sandbox Code Playgroud)
最后,我在我的页面中有这个代码试图在收到信号确认它正在工作时发出警报.
<script type="text/javascript">
$(function () {
var statusChange = $.connection.statusChanges;
statusChange.serverChange = function () {
alert(8);
};
$.connection.hub.start();
});
</script>
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么这不会运行或FireBug错误意味着什么?
我有一个UpdatePanel,我用它来替换页面内的内容.在UpdatePanel之外我有一些jQuery使用该on()函数来分配一些按钮点击.根据我的理解,新的jQuery.on()语法旨在替换事件处理程序和旧live()功能.该live()函数应该监视页面的更改并将事件附加到添加到页面的任何元素,但这不会发生on()在我的测试页面中的函数中.如果我在UpdatePanel更改后打开控制台并运行相同的函数,则事件处理程序可以正常工作.
这是我有javascript智慧:
$(function () {
$('.results').on('click', function () {
$(this).children('.explination').slideToggle();
});
});
Run Code Online (Sandbox Code Playgroud)
UpdatePanel是一个简单的UpdatePanel,里面有MultiView.
我知道我可以使用Microsoft Ajax PageRequestManager来处理这个问题,但是如果事件绑定就像我认为的那样应该是不必要的.我现在会用它,但我很好奇我是不是做错了,或者jQuery和ASP.Net是不是在一起工作.
我的一个理论是,无论出于何种原因,UpdatePanel都是如何不触发jQuery用于捕获更改并再次触发on事件的DOM更新触发器.
asp.net ×2
c# ×2
jquery ×2
signalr ×2
ajax ×1
iis ×1
iis-7 ×1
javascript ×1
signalr-hub ×1
updatepanel ×1
webforms ×1