use*_*757 11 asp.net iis-7.5 signalr
我正在使用SignalR 2.0.在我的VS 2012本地运行时,一切正常.但是当我在IIS上发布网站时,它会中断.该站点加载但其中一个脚本返回404 Not Found.脚本是这样的.
这条道路确实不存在.正确的路径应该是:
https://example.com / private/signalr/negotiate?xxx
请注意粗体部分.
在WebSite(https://example.com/)中,我有另一个应用程序(https://example.com/private/).这个是使用SignalR.
这似乎是SignalR中的一个错误,因为信号器/集线器路径可以从我的私人站点访问.
sty*_*fle 17
我遇到了类似的问题.以下是配置/ signalr URL的文档.
但是,我的解决方案与文档不同.app.MapSignalR()
我改变了我的客户端代码而不是改变标准/MyApp/signalr
.以下是代码,其中"MyApp"是我的Web应用程序的虚拟目录.
var connection = $.hubConnection('/MyApp/signalr', {useDefaultPath: false});
var changesHub = connection.createHubProxy('changesHub');
changesHub.on('userCountChanged', function (count) {
$('#user-count').text(count);
});
connection.start().done(function () {
console.log('Hub has started');
changesHub.invoke('subscribeToChanges', user.id);
});
Run Code Online (Sandbox Code Playgroud)
我尝试了另一种方法(将MapSignalR更改为/ signalr路径)但这不起作用,并且协商仍然路由到/ MyApp/signalr/negotiate.
小智 5
我遇到了同样的问题,在 IIS 默认网站中运行了一个应用程序。
所有 Microsoft 示例都显示以 开头的集线器 url \
,我已经复制了这些示例。但这意味着signalr
路由来自默认网站而不是应用程序。删除领先\
解决了它。
所以我在 Startup.cs 中使用了端点,例如:
endpoints.MapHub<MyHub>("myHub");
Run Code Online (Sandbox Code Playgroud)
和 Javascript 中的集线器连接,如:
var connection = new signalR.HubConnectionBuilder().withUrl("myHub").build();
Run Code Online (Sandbox Code Playgroud)
可能您在应用程序中添加了 MapSignalR() ( https://example.com/private/ )。如果您希望它位于根目录上,请在您的网站上进行配置(https://example.com/)