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

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

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

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

19 ответов

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам