SignalR больше не работает "Нет сборки, содержащей OwinStartupAttribute"

У меня есть проект веб-API, который использует SignalR, который начал давать мне "неспособность часто находить ошибки Microsoft.AspNet.Signal.Core", которые были исправлены только путем полной перестройки в Visual Studio.

Я обновил SignalR и OWIN в Nuget, чтобы попытаться исправить эту проблему, но теперь я всегда получаю "Следующие ошибки возникли при попытке загрузить приложение. - Нет сборки, содержащей OwinStartupAttribute. - Не найдена сборка, содержащая запуск или [AssemblyName].Startup class"

Я единственный человек в моей команде, чтобы получить эту ошибку - тот же код отлично работает на других машинах.

У меня есть класс запуска:

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();
        }
    }
}

Я попытался добавить ключ AppStartup в web.config тоже:

<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

Ответы

Ответ 1

У меня была эта ошибка во время интеграции Identity Framework 2.0. Добавление следующего в файл Web.config проекта разрешило его:

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

Ответ 2

Кажется, что Nuget не обновлял зависимостей SignalR должным образом (он должен проверять, что версия находится в диапазоне и не требует обновления), поэтому в решении были использованы 2 версии сборок OWIN.

Итак, в проекте WebApi: SignalR 2.1.0 и Microsoft.Owin 2.0.2.0

и в другом проекте: SignalR 2.1.0 и Microsoft.Owin 2.0.1.0

Visual Studio не подбирает несовместимости версии при сборке, поэтому, когда веб-проект загружается, OWIN выдает неприятную ошибку (сборки Microsoft.Owin 2.0.1.0 были скопированы в папку bin в веб-проекте).

Чтобы исправить, мне пришлось "обновить пакет Microsoft.Owin -version 2.0.2.0" на устаревшем проекте, очистить и перестроить все.

UPDATE:

По-прежнему возникает та же проблема. Я предполагаю теперь, что это проблема несовместимости между SignalR 2.1.0 и Owin 2.0.2.0.