【问题标题】:Database change notification issue数据库更改通知问题
【发布时间】:2013-03-20 19:23:42
【问题描述】:

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

我尝试了以下步骤

  1. 创建了一个新项目“ASP.NET MVC3”
  2. 带有剃须刀视图引擎的选定 Internet 应用程序。
  3. 通过 nuget 安装 Microsoft ASP.NET 信号器
  4. 创建了相同的数据库和相同的表。
  5. 通过添加连接字符串修改了我的 webconfig。
  6. 应用 Global.asax 中的更改来启用和停止侦听器。
  7. 添加了“JobInfo”类 - 类似于链接中的第 5 步。
  8. 在教程的第 7 步中,当我单击 project > add new item 时,我没有找到 Signalr hub 类。所以我添加了一个普通的同名类

代码

   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”继承它。

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

我该如何解决这个问题?

【问题讨论】:

  • 也许可以试试public class JobHub : IHub 或类似的东西。看来你应该在那里继承。
  • 它给了我'MvcApplication1.JobHub' 没有实现接口成员'Microsoft.AspNet.SignalR.Hubs.IHub.Clients'

标签: asp.net-mvc-3 signalr


【解决方案1】:

我认为这是您缺少的部分。看来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());
   }
}

【讨论】:

  • +1 这行得通。能否请您指导我在问题中提到的第 8 步(tutorial)。 “价值控制器”
  • 应该和教程中的一样。就添加 using 指令而言,您可能必须单击 ApiControllerresolve 问题。普通控制器和api控制器的区别在于ApiControllers只用于数据检索,只返回序列化数据。
  • 我试过了,但它没有建议任何命名空间。 :( 我必须在控制器文件夹下创建它还是像一个类一样?
  • 要获取 SignalR Hub 类的项目模板,您需要从 asp.net/downloads 安装 ASP.NET 和 Web Tools 2012.2
猜你喜欢
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多