数据库更改通知问题

时间:2013-03-20 19:23:43

标签: asp.net-mvc-3 signalr

我是ASP.NET MVC和Signalr的新手。我正在关注this教程,通过信号器学习与ASP> NET的SQL交互。

我已尝试过以下步骤

  1. 创建了一个新项目“ASP.NET MVC3”
  2. 使用剃刀视图引擎选择的Internet应用程序。
  3. 通过nuget安装Microsoft ASP.NET信号器
  4. 创建了相同的数据库和相同的表。
  5. 通过添加connectionstring修改我的webconfig。
  6. 应用Global.asax中的更改以启用&停止列表。
  7. 添加了一个“JobInfo”类 - 类似于链接中的第5步。
  8. 在我点击项目>的教程的第7步添加新项目,我没有找到Signalr hub类。所以我添加了一个同名的普通类
  9.   

    代码

       namespace MvcApplication1
    {
        public class JobHub
        {
            public static void Show()
            {
                IHubContext context = GlobalHost.ConnectionManager.GetHubContext<JobHub>();
                context.Clients.All.displayStatus();
            }
        }
    }
    

    现在,当我构建我的解决方案时,我收到此错误

      The type 'MvcApplication1.JobHub' cannot be used as type parameter 'T' in the generic type or method 'Microsoft.AspNet.SignalR.Infrastructure.IConnectionManager.GetHubContext<T>()'. 
    There is no implicit reference conversion from 'MvcApplication1.JobHub' to 'Microsoft.AspNet.SignalR.Hubs.IHub'.
    

    另外,我不确定如何实现第8步,因为当我点击控制器添加“valueController”时,我无法从“ApiController”继承它。

    以下是我的应用程序的屏幕截图。

    我该如何解决这个问题? enter image description here

1 个答案:

答案 0 :(得分:4)

这是你想到的那部分。似乎JobHub必须从Hub继承。包含此引用,然后尝试继承Hub

using Microsoft.AspNet.SignalR.Hubs;

public class JobHub : Hub
{
    public static void Show()
    {
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<JobHub>();
        context.Clients.All.displayStatus();
    }
}

第8步

@Zerotoinfinite - 似乎using System.Web.Http;对于包含在asp.net mvc 4 中的ApiController是必需的。因此,您可能想要启动一个mvc 4,的项目,只需使用一个不会有任何不同的常规控制器。

public class ValuesController : Controller
{

   JobInfoRepository objRepo = new JobInfoRepository();


   // GET api/values
   public JsonResult Get()
   {
       return Json(objRepo.GetData());
   }
}