SignalRを使用するWeb APIプロジェクトがあり、Visual Studioで完全な再構築を行うことによってのみ修正される「Microsoft.AspNet.Signal.Coreを見つけることができません」というエラーを頻繁に表示し始めました。
NugetでSignalRとOWINをアップグレードしてこの問題を解決しようとしましたが、常に「アプリの読み込み中に次のエラーが発生しました。-OwinStartupAttributeを含むアセンブリが見つかりません。-Startupまたは[AssemblyName]を含むアセンブリが見つかりません。 .Startupクラス」
私は自分のチームでこのエラーを受け取った唯一の人物です。他のマシンでも同じコードが正常に機能します。
スタートアップクラスがあります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;
[Assembly: OwinStartup(typeof(MyProject.Startup))]
namespace MyProject
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
Web.configにもAppStartupキーを追加しようとしました。
<add key="owin:appStartup" value="MyProject.Startup, MyProject" />
WebApiプロジェクトには次の参照があります。
Microsoft.AspNet.SignalR.Core (2.1.0.0)
Microsoft.AspNet.SignalR.SystemWeb (2.1.0.0)
Microsoft.Owin (2.0.2.0)
Microsoft.Owin.Host.SystemWeb (2.0.2.0)
Microsoft.Owin.Security (2.0.2.0)
Owin (1.0.0)
私はIIS 8.5をWindows 8 64Bitで使用しています
Identity Framework 2.0の統合中にこのエラーが発生しました。プロジェクトのWeb.configファイルに以下を追加すると解決しました:
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
NugetはSignalRの依存関係を適切にアップグレードしなかったようです(バージョンが範囲内であり、更新を行わないことを確認する必要があります)。そのため、OWINアセンブリの2つのバージョンがソリューションで使用されていました。
WebApiプロジェクトでは、SignalR 2.1.0およびMicrosoft.Owin 2.0.2.0
および別のプロジェクト:SignalR 2.1.0およびMicrosoft.Owin 2.0.1.0
Visual Studioはビルド時にバージョンの非互換性も検出しないため、Webプロジェクトがロードされると、OWINが厄介なエラーをスローします(Microsoft.Owin 2.0.1.0アセンブリがWeb Projectのbinフォルダーにコピーされました)。
修正するには、古いプロジェクトで「Microsoft.Owin -version 2.0.2.0を更新パッケージ」し、すべてをクリーンアップして再構築する必要がありました。
更新:
それでも同じ問題が発生します。 SignalR 2.1.0とOwin 2.0.2.0の間のいくつかの非互換性の問題だと思います。