冗長 Azure Web アプリケーションの Redis (Azure キャッシュ) バックプレーンで SignalR を使用しています。数日前に、すべての SignalR メッセージが配信されていないように見える (過去には機能していた) ことを検出しました。これは、バックプレーンに問題があることを示しています。
このアプリケーションは、ASP.Net Owin の起動と、ハブの IoC として Autofac を使用し、次のように SignalR を起動します。
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration(redisConnectionString, signalrRedisKey));
var hubConfiguration = new HubConfiguration
{
Resolver = new AutofacDependencyResolver(resolver)
};
app.UseAutofacMiddleware(resolver);
app.MapSignalR("/signalr", hubConfiguration);
Redis バックプレーンの構成文字列を無効なものに変更しても問題ありません。接続できないだけです。SignalR コードは、Web ホストとは別のアセンブリにあります。
アプリケーション自体では例外は発生しませんが、SignalR をトレースするときに次のエラーが発生します。
SignalR.ReflectedHubDescriptorProvider 警告: 0 : アセンブリ "Microsoft.AspNet.SignalR.Owin、Version=1.2.2.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35" の一部のクラスは、ハブの検索時に読み込めませんでした。[C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET
Files\root\79fa3057\a44a64e\assembly\dl3\75de3633\cfc73faf_eb21d101\Microsoft.AspNet.SignalR.Owin.dll]
元の例外の種類: ReflectionTypeLoadException 元の例外メッセージ: 1 つ以上の要求された型を読み込めません。詳細については、LoaderExceptions プロパティを取得してください。
ナゲットの依存関係の問題ですか?
これは、packages.config からの関連する抜粋です。
<package id="Autofac" version="3.5.2" targetFramework="net46" />
<package id="Autofac.Owin" version="3.1.0" targetFramework="net46" />
<package id="Autofac.SignalR" version="3.0.2" targetFramework="net46" />
<package id="Castle.Core" version="3.3.3" targetFramework="net46" />
<package id="Microsoft.AspNet.SignalR.Client" version="2.2.0" targetFramework="net46" />
<package id="Microsoft.AspNet.SignalR.Core" version="2.2.0" targetFramework="net46" />
<package id="Microsoft.AspNet.SignalR.Redis" version="2.2.0" targetFramework="net46" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net46" />
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net46" />
<package id="Newtonsoft.Json" version="8.0.2" targetFramework="net46" />
<package id="Owin" version="1.0" targetFramework="net46" />
<package id="StackExchange.Redis.StrongName" version="1.0.488" targetFramework="net46" />
あなたの助けに本当に感謝します!