13

迅速で汚い答えを探しています。12 時間以上画面を見つめていると、撃たれたと思います。

チュートリアルとして簡単な SignalR アプリケーションを実行したいと考えています。この例を見つけましたが、チケットが未定義であるというエラーが引き続き発生します。さらにいくつか見つけましたが、同じエラーが発生し続けます。サンプル プロジェクトと私のプロジェクトを比較しましたが、相違点は見つかりませんでした。

未定義のオブジェクトを返している$.connection.ticketHubかのようです。$.connection.chat私がする必要がある特別なことはあり/signalr/hubsますか?他の考えは大歓迎です。

4

5 に答える 5

14

/ signalr /hubsをページに追加する必要があります。これはSignalRによって動的に生成されたjavascriptであり、ハブのメソッドスタブとハブのメソッドが含まれています。

したがって、という名前の.NETハブがある場合、JavaScript呼び出しから実行できるように、javascriptTestHubというメソッドが生成されます。SendMessage(string message)$.connection.testHub.sendMessage("some message to server");

ブラウザでURL:/ signalr / Hubsを指定すると、JavaScriptが取得されます。

約150行下に、ticketHubスタブが表示されます。

$.extend(signalR, {
   ticketHub: {
      _: {
          hubName: 'YourNameSpace.TicketHub',
          ignoreMembers: ['someMethod', 'namespace', 'ignoreMembers', 'callbacks'],
          connection: function () { return signalR.hub; }
      },

Mozilla FirebugプラグインまたはChrome開発者ツール(wrench-icon-> Tools-> Developer Tools)を使用して、サーバーとの間で送受信される内容を確認できます。

編集:SignalRにバグがあり、/ signalr / Hubsが正しく生成されませんでした(メソッドスタブは生成されませんでした)。https://github.com/SignalR/SignalR/issues/134

EDIT2:間違ったスクリプトタグを持っている可能性があります。試してみてください:

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>

または、SignalR.AspNet.dllアセンブリを参照していません。正しく思い出せば、/signalrへのルートを配線するのはそのアセンブリです。

于 2012-01-19T20:01:00.177 に答える
3

IE8を使用していますか?

その場合は、signalR スクリプトの上に Json2 スクリプト ref を含めてください。

<script src="../../Scripts/json2.min.js" type="text/javascript"></script>

(Nuget から Json2 を取得)

于 2012-01-23T11:42:44.573 に答える
3

リー・スミスの答えは正しかった。nuget から最新の json2 を取得しました。また、signalR faq サイトから web.config に変更があることを確認します。

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
于 2012-10-05T17:55:51.353 に答える
2

Visual Studio 2010 / MVC 3 / Firefox Browser では、私の Index.cshtml は次のように SignalR を使用しています。

<script src="@Url.Content("~/Scripts/jquery-1.8.0.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.signalR-0.5.2.min.js")" type="text/javascript"></script>

<script src="/signalr/hubs" type="text/javascript"></script>

別の問題がありましたが、@Url.Content を signalr/hubs に追加する必要はありませんでした。テストを簡単にするために、Controllers フォルダーのルートにクラス ファイルを置いています。Nugetから次のものもあります

SignalR / SignalR.Js / SignalR.Server / SignalR.Hosting.AspNet / SignalR.Hosting.Common

(これらの依存関係のすべてが必要というわけではありませんが、それは私が持っているものです)

それが誰かを助けることを願っています...

于 2012-08-15T09:15:24.620 に答える
2

スクリプト タグを次のように変更します。

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script>
于 2012-06-14T04:57:43.457 に答える