SignalR 1.1.2 で動作するチャットのようなアプリケーションを負荷分散サーバーに配置するため、サーバーを同期するバックプレーン ソリューションを実装する必要があります。
これは ASP.NET MVC4 .NET 4.5 アプリケーションです。永続的な接続ではなく、SignalR Hubsを使用します。このアプリは、クライアント側で AngularJS を利用して、UI バインディングと更新を処理します。
ここに記載されている手順に従って、 SQL サーバー バックプレーンを実装し、ここに記載されている 1.x から 2.0 への移行に記載されている手順を使用しました。ソリューションはビルドされますが、SignalR を使用するページにアクセスすると、"/signalr/hubs" スクリプト参照が 500 エラーを返します。
これまでに行った手順のリストを次に示します。
nuget を使用して、SignalR 1.1.2 に関連するすべての参照と依存関係を削除しました。/bin および /packages ディレクトリを再確認して、古いライブラリを参照していないことを確認します。これは、SignalR のアンインストールと再インストールがアップグレードの方法であると述べた 2.0 アップグレードに関連するgithub の問題で見つかったコメントごとです。
Package Manager Console (PMC) 経由で SignalR 2.0.0-beta2 をインストール
Install-Package Microsoft.AspNet.SignalR -Pre
PMC を使用してインストールされた SQL Server Messaging Backplane
Install-Package Microsoft.AspNet.SignalR.SqlServer -Pre
RouteTable.Routes.MapHubs();
Global.asax から削除プロジェクトのルートに Startup クラスを作成しました。
Startup.cs
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
namespace My.NameSpace
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
}
Web.config 内
<add key="owin:AppStartup" value="My.NameSpace.Startup, App_Code"/>
に追加<appSettings>
Startup.Configuration() メソッドにブレークポイントを配置し、アプリの起動時に例外なくヒットして app.MapHubs を実行していることを確認しました
私は永続的な接続を使用していないため、行
app.MapConnection<MyConnection>("/echo");
を含めず、あいまいな定義の問題は発生していません。チャット アプリのページは、次のライブラリを参照しています
- jquery-1.8.3.js
- jquery.signalR-2.0.0-beta2.js
<script src='/signalr/hubs'></script>
- AngularJS v1.1.5
プロジェクトの実行時に
/signalr/hubs
、チャット アプリのページで見つからないchrome dev tools は、ネットワーク タブ
500 Internal Server Error
の呼び出しに戻ります。/signalr/hubs
/signalr/hubs
ファイルシステムにディレクトリがありません
私の次のステップは、非常に基本的なハブを使用して新しいソリューションを作成できるかどうかを確認し、Signal 2.0 を機能させることができるかどうかを確認することです。その場合は、2 つのソリューションを比較して、違いを確認します。
これを機能させるために他に何を確認または調査できるかについて、誰かが考えを持っていますか?