Недопустимый класс запуска OWIN

Я получаю эту ошибку, так как мой проект не может найти ссылку для класса запуска OWIN. Я даже установил все справочные пакеты OWIN через Nuget, все еще получая ту же проблему. Я использую Visual Studio 2012 и MVC4.

При попытке загрузить приложение произошли следующие ошибки.

  • Нет сборки, содержащей OwinStartupAttribute.
  • Не найдено сборки, содержащей класс Startup или [AssemblyName].Startup. Чтобы отключить обнаружение запуска OWIN, добавьте appSetting owin: AutomaticAppStartup со значением "false" в вашем web.config. Чтобы указать запуск, класс или метод OWIN, добавьте appSetting owin: AppStartup с полным классом запуска или имя метода конфигурации в файле web.config.

Ответ 1

Создайте один класс с именем Startup, это поможет вам.

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}

Ответ 2

В нашем проекте нам не нужны функции OWIN, поэтому мы удалили все ссылки owin из исходного проекта ASP.NET MVC. Проблема возникла после удаления класса запуска OWIN.

Проблема заключалась в дополнительной owin dll в моей папке bin. Когда я удалил их, проблема была решена. Вы должны удалить их, удалив папку bin. Чистое решение не удаляет эти DLL.

Как-то IIS по-прежнему выполняет DLL OWIN, когда они находятся в папке bin.

Ответ 3

В Visual Studio 2013 RC2 для этого есть шаблон. Просто добавьте его в папку App_Start.

enter image description here

Шаблон создает такой класс:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebApiOsp.App_Start.Startup))]

namespace WebApiOsp.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
        }
    }
}

Ответ 4

Если вы не хотите использовать запуск OWIN, это то, что вы должны добавить в свой файл web.config:

Под AppSettings добавьте следующую строку:

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

Вот как это должно выглядеть в вашем web.config:

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

Ответ 5

Ищите файл Startup.cs, возможно, вам не хватает одного из них. Этот файл является точкой входа для OWIN, поэтому кажется, что этого не хватает. Посмотрите OWIN Startup class здесь, чтобы понять, что происходит.

Как указывает ваша ошибка, вы можете отключить это в файле web.config, выполнив следующее...

Чтобы отключить обнаружение запуска OWIN, добавьте appSetting owin: AutomaticAppStartup со значением "false" в вашем web.config

Ответ 6

Сначала вы должны создать свой загрузочный файл и после того, как вы должны указать локаль этого файла в web.config, внутри тега appSettings с помощью этой строки:

<add key="owin:AppStartup" value="[NameSpace].Startup"/>

Он решил мою проблему.

Ответ 7

У меня была эта проблема, понимаете, что это не то, что было неправильно в случае OP, но в моем случае у меня был класс Startup, он просто не нашел его по умолчанию.

Моя проблема заключалась в том, что у меня были пробелы в имени сборки, и, следовательно, пространство имен по умолчанию отличалось от имени сборки, поэтому пространство имен для класса запуска отличалось от имени сборки.

Как показывает ошибка, по соглашению он ищет [Assembly Name].Startup для класса... поэтому убедитесь, что пространство имен для вашего класса Startup совпадает с именем Assembly. Исправлена ​​проблема для меня.

Ответ 8

Я попробовал большинство рекомендованных исправлений здесь и все еще не мог избежать сообщения об ошибке. Я, наконец, выполнил комбинацию нескольких рекомендованных решений:

  • Добавил эту запись в начало раздела AppSettings моего web.config:

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

  • Развернул ссылки node моего проекта и удалил все, что содержало строку OWIN. (Я чувствовал себя в безопасности, так как моя организация не является (и не будет) активным провайдером OWIN в будущем)

Затем я нажал Run, и моя домашняя страница загрузилась правильно.

Ответ 9

В моем случае я переименовал проект и изменил его структуру папок. Я обнаружил, что обновление RootNameSpace и AssemblyName в файле .csproj, где была вызвана ошибка, разрешило ошибку. Если вы изменили пути своего проекта, я бы рекомендовал также проверить это.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>

Ответ 10

Мое дело? У меня был файл автозагрузки, но он исключен в проекте. Я просто включил его, и ошибка осталась.

Ответ 11

С этим можно столкнуться и в Visual Studio 2015, когда вы используете Azure AD с проектом MVC. Здесь он создает файл запуска как Startup.Auth.cs в папке App_Start, но в нем будет отсутствовать

[assembly: OwinStartup(typeof(MyWebApp.Startup))]

Так что добавьте это, и вам будет хорошо идти. Это идет до начала пространства имен.

Ответ 12

Также возможно получить это исключение (даже если у вас есть правильно настроенный класс запуска), если работа с IIS Express и ваш виртуальный каталог настроены неправильно.

Когда я столкнулся с этой проблемой, разрешение было просто нажать кнопку "Создать виртуальный каталог" на вкладке "Веб" свойств проекта (с использованием Visual Studio 2013)

Ответ 13

Вы действительно пытаетесь добавить OWIN в свой проект или это что-то неожиданное?

  • Если вы хотите добавить OWIN, добавление класса Startup - это путь.

  • В случае вам не нужна ссылка на Owin:

    удалить Owin.dll из папки /bin .

    Owin.dll - это тот, кто пытается идентифицировать класс запуска.

Ответ 14

Пока я не могу полностью объяснить, почему это решило проблему для меня, я столкнулся с такой проблемой после того, как я изменил проект API для создания разделов \debug и \release. Как только я вернусь назад, чтобы вернуться к созданию одной папки \bin, все стало работать.

Я написал свой опыт здесь: Невозможно запустить класс запуска OWIN для запуска в IIS Express после переименования файла проекта ASP.NET

Ответ 15

Я столкнулся с этой проблемой после экспериментирования с SignalR, а затем удалив ее из проекта. Чтобы решить проблему, я должен был удалить содержимое папки bin для сайта на удаленном сервере, а затем снова опубликовать.

Ответ 16

Просто убедитесь, что установлен ваш файл packages.config (если исключено, в проводнике будет отображаться красный символ без ввода). По какой-то причудливой причине моя была исключена и вызвала этот вопрос.

Ответ 17

Я продолжал получать ту же ошибку, когда я начал свой проект, используя панель управления Browser Link в VS2013. Но, когда я запускал свой проект в режиме отладки, он работал бы. Я не мог понять, почему и как заставить работать панель управления Browser Link. Я проверил файл автозагрузки, это было прекрасно, добавила строку appSetting, как описано в некоторых ответах "", но ничего не получилось.

По-видимому, я ошибался, нажав ссылку WRONG в панели мониторинга браузера. Все ссылки на проекты решений отображаются в панели мониторинга браузера, но работает только ссылка на проекты запуска. Вам нужно нажать на ссылку запуска проекта.

Пример: у меня есть 2 проекта, оба отображаются в панели мониторинга браузера, но будет работать только тот, который помечен как проект запуска (отображается в Живом обозревателе смело). Я думал, это может помочь кому-то сделать очевидное, это стоило мне 2 дня, чтобы наткнуться на очевидное.

Ответ 18

У меня возникла эта проблема, когда я получил последнюю версию TFS, тогда как другие проекты были открыты в нескольких экземплярах VS. У меня уже есть все исправления выше. Повторное открытие VS устранило проблему.

Ответ 19

В моем случае я вошел в ftp-сервер. Взял резервную копию текущих файлов на ftp-сервере. Удалите все файлы вручную с ftp-сервера. Очистите решение, перераспределите код. Это сработало.