Сборка, содержащая ошибку OwinStartupAttribute, не обнаружена


87

Эта ошибка

При попытке загрузить приложение произошли следующие ошибки. - Не найдено сборок, содержащих атрибут OwinStartupAttribute. - Данный тип или метод false не найден. Попробуйте указать сборку. Чтобы отключить обнаружение при запуске OWIN, добавьте appSetting owin: AutomaticAppStartup со значением false в свой web.config. Чтобы указать сборку, класс или метод запуска OWIN, добавьте appSetting owin: AppStartup с полным именем класса запуска или метода конфигурации в свой web.config.

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

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

Я попытался следовать инструкциям на странице, вставив owin: AutomaticAppStartup в файл config.

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

это не устранило проблему. Какие-либо предложения?


6
Вместо того, <add key="owin:AppStartup" value="false"></add>чтобы попытаться <add key="owin:AutomaticAppStartup" value="false"></add>проверить, работает ли это? Кроме того, некоторые ссылки в помощь: OWIN Startup Class Detection и Owin предоставляют класс запуска в web.config (без автоматического обнаружения запуска)
Keyur PATEL

Это сработало. Также спасибо за ресурсы. Моя благодарность @KeyurPATEL.
NVA

2
Я думаю , что вам не хватает startup.cs файл
Kurkula

2
Куркула абсолютно прав. Вы установили систему аутентификации ASP.net не только для того, чтобы выбросить ее при запуске. Вам абсолютно не хватает файла startup.cs в корне проекта. Поместите этот код в файл .------------- с помощью Microsoft.Owin; с помощью Owin; [сборка: OwinStartupAttribute (typeof (YOURPROJECT.Startup))] пространство имен YOURPROJECT {открытый частичный запуск класса {общедоступная конфигурация void (приложение IAppBuilder) {ConfigureAuth (приложение); }}}
Paras

Ответы:


171

Добавьте этот код web.configпод <configuration>тег, как показано на рисунке ниже. Ваша ошибка должна исчезнуть.

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

Проверьте изображение ниже


4
Это решение, или, по крайней мере, это решение устранило мою проблему. Отметьте ответ как решение. Этот должен быть наверху ...
Мейсон

1
Спасибо, это сработало, но может ли кто-нибудь сказать мне, что я теряю, установив для этого параметра значение false?
IKriKan

83

Хотел избавиться от OWIN в проекте:

  1. Удаление ссылок OWIN и пакетов Nuget из проекта
  2. Очистить и восстановить проект
  3. Запустить приложение

Затем я получил ошибку OWIN. Эти шаги не сработали, потому что OWIN.dll все еще находился в каталоге bin / .

ИСПРАВИТЬ:

  1. Удалить bin / каталог вручную
  2. Восстановить проект

12
lol - удаление папок bin и obj всегда является исправлением для странных ошибок зависимостей
matt.fc

4
Ранее я скачал и попробовал Nuget SignalR, который, в свою очередь, добавил nuget owin. Пакеты были удалены, но мне также пришлось удалить папку bin, чтобы она заработала.
Mortb

Пришел сюда после установки SignalR и прекращения попытки. Спасибо.
Джон Гердсен

Легко и быстро.
Dash

Также поможет удалить пакет owin, или поможет удаление всех dll, содержащих owin, из справочников
Heemanshu Bhalla

23

Для тех, кто хочет запустить owin, <add key="owin:AutomaticAppStartup" value="false" />не сработает, но у меня сработало следующее.

  1. если у вас есть частичный класс Startup в вашем файле Startup.Auth, создайте другой частичный класс Startup в корне вашего проекта.

  2. определить атрибут сборки owinstartup, указывающий на этот класс

  3. создать метод "Конфигурация"

  4. перестроить ваше приложение

Вы также можете создать метод «Configuration» и добавить атрибут сборки в Startup.Auth, но это позволит вам разделить класс Startup за счет использования разделения определения класса C #. Подробнее здесь: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

Вот как выглядел мой файл Startup.cs:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectNameSpace.Startup))]

namespace ProjectNameSpace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

У меня это сработало, я понял, что это происходит, когда в названии проекта есть точка. Итак, если пространство имен похоже на «пространство имен ProjectNameSpace.ApiRest», то определение сборки, как в вашем примере, устранит проблему.
karique



3

Я получил эту ошибку, потому что в коде был лишний пробел

Вместо того

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

это было

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


3

Убедитесь, что в вашем проекте создан класс Startup . Это пример:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof({project_name}.Startup))]

namespace AuctionPortal
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

Чтобы воспользоваться преимуществами ASP.net Identity. Это решение.
Paras

2

просто заменяя

        using (WebApp.Start(url))

с участием

        using (WebApp.Start<Startup>(url))

решил мою проблему. Класс с именем Startup уже реализован. как упоминалось выше @robthedev


2

Добавьте следующий ключ в Web.config, чтобы удалить код

<appSettings>

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

1

Убедитесь, что у вас выбран правильный запускаемый проект. В качестве стартапа у меня был проект веб-API. Это вызвало эту ошибку.


1

Я знаю, что этот пост старый, но на всякий случай, если кто-то ищет ту же ошибку, попробуйте добавить

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

после тега <appSettings>

и если после этого появится следующая ошибка:

Ошибка HTTP 401.0 - сообщение о неавторизованной ошибке

добавьте следующий код после тега, <system.web>он может быть в начале

<authentication mode="Forms"> <forms loginUrl="~/YourFolderName/yourFileName" timeout="1" /> </authentication>

В моем случае это:

<authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="1" /> </authentication>


0

Я удалил все библиотеки DLL из ветки, которая не работала, затем скопировал все DDL из моей ветки, которая работала, в мою ветку, которая не работала. Это решило проблему.


0

просто вставьте этот код <add key="owin:AutomaticAppStartup" value="false" /> в Web.config Не в web.config есть два webconfig, поэтому убедитесь, что он будет вставлен в Web.Config


0

если вы хотите использовать signalr, вам нужно добавить класс startup.cs в свой проект

Щелкните правой кнопкой мыши в вашем проекте, затем добавьте новый элемент и выберите класс запуска OWIN

затем внутри метода конфигурации добавьте код ниже

app.MapSignalR();

Надеюсь, это будет вам полезно


0

Добавьте класс Startup.cs в корень проекта со следующим кодом:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectName.Startup))]
namespace ProjectName
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

0

При развертывании в Azure вы получите эту ошибку. Просто удалите все файлы на сайте (сделайте резервную копию любого файла web.config, appsettings.json или того, что вы не хотите терять) и разверните снова. Есть некоторые оставшиеся файлы dll, которых не должно быть на сайте, что заставляет портал Azure думать, что ему нужно использовать OWIN.


0

Добавьте приведенный ниже код в файл web.config, затем запустите проект ...

    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    </runtime>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.