web-dev-qa-db-ja.com

SignalRが機能しなくなった「OwinStartupAttributeを含むアセンブリが見つかりません」

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で使用しています

16
SturmUndDrang

Identity Framework 2.0の統合中にこのエラーが発生しました。プロジェクトのWeb.configファイルに以下を追加すると解決しました:

<appSettings>
  <add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
31
N_E

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の間のいくつかの非互換性の問題だと思います。

2
SturmUndDrang