asp.net-mvc-4 – / signalr / hubs未加载到asp.net mvc4:抛出404

这是我做的

>我使用nuget获取我的MVC4项目的SignalR.
>在我的控制器中创建一个MyHub类(SignalRTestController.cs)
>在“索引操作”中,尝试从集线器外部广播消息并返回视图.
>在视图中,引用了所有脚本和/ signalr / hubs.

问题是/ signalr / hubs没有找到(throws 404).

我的项目有区域,结构如图所示:

> MVCProject

>区域

> SubFolder

>控制器

> SignalRTestController.cs

>模型
>查看

> Index.cshtml

>控制器
>模型
>查看
>脚本

signalR的所有脚本都在Scripts文件夹中,我的SignalRTestController.cs如下所示:

namespace SignalRTest.Controllers
{
public class SignalRTestController : Controller
{
    public ActionResult Index()
    {
        // Do some work here

        // broadcasting over a Hub from outside of a Hub
        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.say("Hello SignalR!");

       return View();
    }
}

[HubName("MyHub")]
public class MyHub : Hub
{
    public void Say(string message)
    {
        Clients.sendMessage(message);
    }
}
}

任何我的Index.cshtml都引用了所有的javascript和/ signalr / hubs,如下所示:
//其他Javascripts

script type =“text / javascript”src =“/ signalr / hubs”/>

我认为控制器是好的,但我没有得到/ signalr / hubs.正在投掷404,Chrome控制台中的消息是这样的:

资源解释为脚本,但是使用MIME类型text / html:“http://www.myproject.com/signalr/hubs”进行传输.
未知的语法错误:意外的令牌<集线器:2
未捕获SignalR:加载集线器时出错.确保您的枢纽参考是正确的,例如
脚本src =’/ signalr / hubs’&gt ;.

脚本作为html返回的原因是服务器返回404未找到.

我不知道有什么问题.我认为这可能是路由问题.我不知道,如果我们需要在/ signalr / hubs的项目中添加任何路由信息,或者我在这里缺少一些东西.

FYI:当我创建一个新的空的MVC项目并添加signalR并开始工作时,它的工作完全正常.无需添加路由.

此外,我在某些地方使用认路由和属性路由.但是控制器SignalRTestController不使用属性路由.

解决方法

你有呼叫RouteTable.Routes.MapHubs()(可能在Global.asax)?如果是这样,尝试摆脱这个问题,看看它是否解决了你的问题. – 皮特11月16日17时22分

我一直在玩它.看来,在当前版本(我得到最新的源,因为我需要一个签名的程序集),你必须调用RouteTable.Routes.MapHubs().但是为了工作,它必须先被调用(或至少在RouteConfig.RegisterRoutes()调用之前).如果之后被调用,MVC会为此控制器寻找并且不起作用.在我通过nuGet使用的早期版本中,删除RouteTable.Routes.MapHubs()来解决问题,但现在似乎是必需的.希望有帮助 – 皮特11月27日20时53分

显然你通过将RouteTable.Routes.MapHubs()更改为:RouteTable.Routes.MapHubs( “〜/ signalr”).

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...