OWIN Startup Class Отсутствует


226

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

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

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

7
Есть ли у вас Startup.csв проекте?
Кристиандев

4
Ваша сборка содержит OwinStartupAttribute? Ваша сборка Startupили [AssemblyName].Startupкласс? Вы отключили обнаружение запуска OWIN, добавив appSetting owin:AutomaticAppStartupсо значением «false» в своем файле web.config? Вы сделали одну из этих вещей и задаетесь вопросом, почему это не работает? Какой у Вас вопрос?
ta.speot.is

1
Это вещь. Не отображается класс запуска OWIN, когда я пытаюсь добавить новый элемент в свой проект. Я искал в Google, он говорит, что добавить ссылки OWIN через Nugets, и я сделал то же самое. Все еще не получаю Класс, чтобы добавить.
Крунал Патил

Ответы:


213

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

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

116
В дополнение к этому, если ваш класс запуска каким-то образом не находится в вашем пространстве имен по умолчанию, добавьте строку веб-конфигурации в <appSettings>область, например:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Grey

7
В настоящее время есть 3 способа настройки owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider

22
Помимо комментариев @ Андрей.Фил Грея, вкладывая [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]в AssemblyInfo.csбудет работать тоже.
Ахилл

14
Вам также понадобится пакет Microsoft.Owin.Host.SystemWeb, иначе запуск не будет вызван
rjlopes

7
Мы могли бы также добавить эту строку непосредственно перед пространством имен класса Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen

194

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

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

Так или иначе, IIS все еще выполняет библиотеки OWIN, когда они находятся в папке bin.


6
У меня тоже была эта проблема, и я также должен был убедиться, что ссылки не ссылаются ни на какие OWIN DLL.
хакер

2
Та же проблема и то же решение. Однако в моем случае у меня была одна ветвь кода с Signalr и одна без. При переключении веток dlls Signalr оставались даже после Чистки. Мне нужно было удалить их вручную.
Кивиллис

3
Просто отметим, что это буквально означает папку bin, а не просто «Clean Solution» из Visual Studio, которая в моем случае удаляла большинство DLL, но не все.
Алан Макдональд

1
Что-то, что работало для меня, это после удаления ссылок OWIN, и это все еще не работало должным образом, добавляя <add key="owin:AutomaticAppStartup" value="false"/>как appSetting. Просто несколько советов людям, пытающимся это сделать, и это все еще не удается.
ЛатентДенис

1
Для людей, для которых это не сработало, убедитесь, что даже после удаления папок с корзинами вы переходите в ссылки на проекты и удаляете ссылки на библиотеки Owin dll. В моем случае я удалил папки bin, но забыл, что у меня все еще есть (неиспользуемые) ссылки в файле .csproj.
akousmata

104

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

введите описание изображения здесь

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

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
        }
    }
}

3
VS2015 тоже нуждался в этом
Том Стиккель

2
Это сделало это для меня - я создал файл Startup.cs и заполнил его правильно, но пропустил, что он должен быть в папке App_Start. Отлично работал на моей машине разработчика, но однажды опубликовано было с ошибкой. Спасибо!
Джон Петерсон

Не забудьте добавить app.MapSignalR (); в конфигурации (приложение IAppBuilder), иначе при вызове [YourSite] / signalr возвращается 404
Kasper Halvas Jensen

45

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

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

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

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

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

1
Это на самом деле один из полных ответов. Если вам не очень нравятся настройки web.config, трудно представить, что вы должны добавить ключ и значение в xml-файл
makoshichi

25

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

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

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


5
Я добавил <add key="owin:AutomaticAppStartup" value="false" />в <appSettings>группу, и Startup.cs больше не был нужен.
веб-червь

@webworm, я упоминал об этом выше.
Кристиандев

2
@ christiandev что именно будет <add key="owin:AutomaticAppStartup" value="false" />делать? Будет ли это отключить какую-либо функциональность? Нужно ли запускать приложение позже, чтобы иметь возможность использовать какие-либо функции OWIN?
Flo

18

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

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

Это решило мою проблему.


11

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

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

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


1
У меня была похожая проблема. Имя моего проекта содержало дефис «-», который был преобразован в подчеркивание VS, так что пространство имен и класс запуска были существенно разными.
LDJ

7

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

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

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

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

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


4

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

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

Святая корова, спасибо тебе, брат, застрял на нем навсегда и не нашел решения, пока я не прочитал это, AssemblyName не обновлялось после того, как я изменил его вручную. Теперь это работает! Спасибо вам большое!
Мейсон

3

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


3

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

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

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


2

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

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


2

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

  1. Если вы хотите добавить OWIN, добавьте класс Startup.

  2. Если вам не нужна ссылка на Овина :

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

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


1

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

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


1

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


1

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


0

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

Видимо, то, что я делал неправильно, это щелкнул по НЕПРАВИЛЬНОЙ ссылке в панели инструментов браузера. Все ссылки на проекты решений отображаются на панели инструментов браузера, но работает только ссылка на проекты запуска. Вам нужно нажать на ссылку запуска проекта.

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


0

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.