7

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 BackplaneInstall-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 つのソリューションを比較して、違いを確認します。

これを機能させるために他に何を確認または調査できるかについて、誰かが考えを持っていますか?

同様の問題に関する関連する StackOverflow の質問: onetwo

4

2 に答える 2

12

Visual Studio Developer Server (Cassini) の代わりにローカル IIS Web サーバーを使用するようにプロジェクト構成を変更することで、問題が修正されたことが判明しました。

/signalr/hubsブラウザで url にアクセスし、サーバー エラーを確認して原因を特定しました。

System.PlatformNotSupportedException: This operation requires IIS integrated pipeline mode.

いくつかのグーグルはこのページを見つけました.ASP.NET開発サーバーが統合パイプラインモードをサポートしていないためにエラーが発生した.

プロジェクトを右クリックしてプロパティを選択し、[Web] タブをクリックして、使用するサーバーを変更できます。[サーバー] セクションで [ローカル IIS Web サーバーを使用] を選択します。

于 2013-07-31T00:32:06.357 に答える