Клас запуску OWIN відсутній


226

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

Наступні помилки виникли під час спроби завантажити додаток.

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

7
Чи є Startup.csу вас проект?
christiandev

4
Чи містить ваша асамблея OwinStartupAttribute? Ваша збірка а Startupчи [AssemblyName].Startupклас? Ви відключили відкриття запуску OWIN, додавши додаток AppSetting owin:AutomaticAppStartupзі значенням "false" у своєму web.config? Ви зробили одну з цих речей і цікавитеся, чому це не працює? Яке Ваше запитання?
ta.speot.is

1
У цьому річ. У ньому не відображається клас запуску OWIN, коли я намагаюся додати новий елемент у свій проект. Я шукав у google, там написано додати довідки OWIN через nugets, і я зробив те саме. Досі Клас не додати.
Krunal Patil

Відповіді:


213

Створіть один клас із запуском імені, це допоможе вам ..

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

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

7
На сьогоднішній день існує 3 способи налаштування Owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider

22
Окрім коментаря @ andrew-grey, розміщення [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.

Проблема полягала в тому, що додаткові власні DLL в моїй папці біна. Коли я видалив їх, проблему було вирішено. Ви повинні їх видалити, видаливши папку bin. Чистий розчин не видаляє ці клітини.

Так чи інакше, IIS все ще виконує DLL OWIN, коли вони знаходяться в папці bin.


6
У мене теж була ця проблема, і я також повинен був переконатися, що в Посиланнях немає посилань на DLL OWIN.
хакер

2
Те саме питання і те саме рішення. Однак у моєму випадку у мене була одна гілка коду з Signalr і одна без. Під час перемикання гілок сигнали залишаються навіть після чистого. Мені потрібно було видалити їх вручну.
Kywillis

3
Лише зауваження, щоб сказати, що це буквально означає, що папка bin не просто використовує "Clean Solution" від Visual Studio, яка в моєму випадку видаляла більшість DLL, але не всі.
Алан Макдональд

1
Щось, що працювало для мене, після видалення посилань на OWIN, і воно все ще не працює належним чином, було додано <add key="owin:AutomaticAppStartup" value="false"/>як додаток. Просто кілька порад людям, які намагаються це зробити, і це все ще не вдається.
LatentDenis

1
Для людей, для яких це не працювало, переконайтеся, що навіть після того, як ви видалили папки бін, ви перейдете до посилань на проект та видалите посилання на DLL Owin. У моєму випадку я видалив папки біна, але забув, що у файлі .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), ще 404 повертається при виклику [YourSite] / сигналізатора
Каспера Халваса Йенсена

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, додайте у програму webSafig власник appSetting Owin: AutomaticAppStartup зі значенням "false".


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

@webworm, я згадую це вище.
christiandev

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

18

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

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

Це вирішило мою проблему.


11

У мене була ця проблема, зрозумійте, це не те, що було не так у випадку з ОП, але в моєму випадку у мене був клас "Запуск", він просто не знайшов його за замовчуванням.

Моєю проблемою було те, що у мене було пробіли у моєму імені асамблеї, а значить, простір імен за замовчуванням відрізнявся від назви збірки, отже, область імен для класу запуску була іншою, ніж назва збірки.

Як свідчить про помилку, за умовою він шукає [Назва асамблеї]. Стартап для класу ... тому переконайтесь, що простір імен для вашого класу запуску збігається з назвою збірки. Виправлена ​​проблема для мене.


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, коли ви використовуєте AD Azure з проектом 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

Я продовжував отримувати ту саму помилку, коли розпочав свій проект за допомогою інформаційної панелі браузерних посилань у VS2013. Але коли я запустив свій проект у режимі налагодження, він би спрацював. Я не міг зрозуміти, чому і як змусити працювати приладовою панеллю браузерних посилань. Я перевірив файл запуску, він все добре, додав рядок appSetting, як описано в деяких відповідях "", але нічого не вийшло.

Мабуть, те, що я робив неправильно, було натисканням на посилання WRONG на панелі перегляду браузера. Усі посилання на проекти Solutions відображаються на інформаційній панелі браузера, але працює лише посилання на стартові проекти. Потрібно натиснути на посилання запуску проекту.

Приклад: У мене є два проекти, обидва показані на інформаційній панелі браузера, але працюватиме лише той, який позначений як проект запуску (показується як жирний у Провіднику рішень.) Я подумав, що це може допомогти комусь зробити очевидне, це коштувало мені 2 дні натрапляти на очевидне.


0

У мене була ця проблема, коли я отримав останню інформацію про TFS, тоді як інші проекти були відкриті в декількох випадках VS. У мене вже є всі виправлення вище. Повторне відкриття VS вирішило проблему.


0

У моєму випадку я увійшов на ftp-сервер. Взяв резервну копію поточних файлів на ftp сервері. Видаліть усі файли вручну з ftp-сервера. Чистий розчин, перерозподілений код. Це спрацювало.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.