1

ASP.NETMVCとSignalrの両方を初めて使用します。このチュートリアルに従って、 Signalrを介したASP>NETとのSQLの相互作用を学習します。

私は以下の手順を試しました

  1. 新しいプロジェクト「ASP.NETMVC3」を作成しました
  2. かみそりビューエンジンを備えた選択されたインターネットアプリケーション。
  3. nuget経由でインストールされたMicrosoftASP.NETSignalr
  4. 同じデータベースと同じテーブルを作成しました。
  5. connectionstringを追加して、webconfigを変更しました。
  6. Listnerを有効および停止するためにGlobal.asaxに変更を適用しました。
  7. リンクのステップ5と同様に、クラス「JobInfo」を追加しました。
  8. チュートリアルのステップ7で、[プロジェクト]> [新しいアイテムの追加]をクリックすると、Signalrハブクラスが見つかりませんでした。そこで、同じ名前の通常のクラスを追加しました

コード

   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'.

また、コントローラーをクリックして「valueController」を追加すると、「ApiController」から継承できないため、手順8の実装方法がわかりません。

以下は私のアプリケーションのスクリーンショットです。

どうすればこれを修正できますか? ここに画像の説明を入力してください

4

1 に答える 1

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 - asp.net mvc 4using System.Web.Http;に含まれている必要があるようです。そのため、mvc 4 のプロジェクトを開始する、実際には何も変わらない通常のコントローラーを使用することをお勧めします。ApiController

public class ValuesController : Controller
{

   JobInfoRepository objRepo = new JobInfoRepository();


   // GET api/values
   public JsonResult Get()
   {
       return Json(objRepo.GetData());
   }
}
于 2013-03-20T19:30:47.087 に答える