2

SignalRをASP.Net「WEBSITEPROJECT」に実装しようとしています。(これは既存のアプリケーションであり、Webサイトプロジェクトであり、Webアプリケーションに切り替えることはできません。)

SignalRサンプルコードを実行しようとすると、次のエラーが発生します。(これは基本的な株式相場表示のサンプルです。既存のコードにこれを実装する前に、すべてが正しくセットアップされていることを確認したいだけです。)

これが私が得るエラーです

Unhandled exception at line 71, column 5 in http://localhost:49218/SchoolFinancial/SignalR.Sample/SignalR.StockTicker.js

0x800a138f - Microsoft JScript runtime error: Unable to get value of the property 'client': object is null or undefined

これがエラーがスローされるJavaScriptです

// Add client-side hub methods that the server will call
$.extend(ticker.client, {
    updateStockPrice: function (stock) {
        var displayStock = formatStock(stock),
            $row = $(rowTemplate.supplant(displayStock)),
            $li = $(liTemplate.supplant(displayStock)),
            bg = stock.LastChange === 0
                ? '255,216,0' // yellow
                : stock.LastChange > 0
                    ? '154,240,117' // green
                    : '255,148,148'; // red

        $stockTableBody.find('tr[data-symbol=' + stock.Symbol + ']')
            .replaceWith($row);
        $stockTickerUl.find('li[data-symbol=' + stock.Symbol + ']')
            .replaceWith($li);

        $row.flash(bg, 1000);
        $li.flash(bg, 1000);
    },

    marketOpened: function () {
        $("#open").prop("disabled", true);
        $("#close").prop("disabled", false);
        $("#reset").prop("disabled", true);
        scrollTicker();
    },

    marketClosed: function () {
        $("#open").prop("disabled", false);
        $("#close").prop("disabled", true);
        $("#reset").prop("disabled", false);
        stopTicker();
    },

    marketReset: function () {
        return init();
    }
});

これは、SignalRがWebサイトプロジェクトで動作できるようにするためのWeb.Config設定の変更です。

(これは、Web.Configの次のセクション内にあります)

  <modules runAllManagedModulesForAllRequests="true">
  </modules>

私はSignalRを使用するのは初めてで、以前の投稿で見つけたものから、それを機能させることができれば、これで問題が解決するはずです。

したがって、ASP.NetのWebサイトプロジェクトでSignalRを使用した経験がある人がいれば、提案や推奨事項をいただければ幸いです。

重要かどうかはわかりませんが、Visual Studio 2012(ASP.Net / C#)を使用しており、Webサイトは.NetFramework4.5バージョンを使用しています。

よろしくお願いします...

4

1 に答える 1

2

このエラーは、おそらく次のいずれかの理由で発生します。-

1)yourbaseurl / signalr/hubsは404を提供しています。ページが読み込まれた後にChromeコンソールで確認できます。このエラーが発生した場合は、ハブルートがマップされていることを確認する必要があります。を使用して

RouteTable.Route.MapHubs() 

global.asaxアプリケーションで起動するか、WebActivatorExなどのスタートアップインジェクターを使用します。

 void Application_Start(object sender, EventArgs e) 
    {
        // Code that runs on application startup
        RouteTable.Routes.MapHubs();
    }

2)すべてのSIgnalr関連のdllは互換性のあるバージョンです。ライブラリパッケージマネージャーコンソールを使用してインストールした場合、これは問題になりません。

3)上記の手順が問題ではない場合、問題はクライアントプロキシが適切に生成されていないことです。つまり、baseurl / signalr / Hubsを押すと、キャメルケースのc#ハブクラス名と同じ名前で登録されたハブが表示されるはずです。

proxies.stockTicker.client 

初期化され、

proxies.stockTicker.server 

c#HubProxyで宣言されているものと同じ関数名で定義されています。そして、これらはすべて、次のプロトタイプのデカレーションの下に存在します。

 $.hubConnection.prototype.createHubProxies

4)手順3に従ってプロキシを生成できない場合は、SignalR.StockTickerのクラスファイルをAppCodeに配置してみてください。

注:-サンプルをAsp.Net4.5Webサイトで試してみました。

ではごきげんよう!!

于 2013-03-19T02:48:00.053 に答える