Nie znaleziono zestawu zawierającego błąd OwinStartupAttribute

87

Ten błąd

Podczas próby załadowania aplikacji wystąpiły następujące błędy. - Nie znaleziono zestawu zawierającego OwinStartupAttribute. - Nie znaleziono podanego typu lub metody „false”. Spróbuj określić Assembly. Aby wyłączyć wykrywanie uruchamiania OWIN, dodaj właściwość appSetting owin: AutomaticAppStartup z wartością „false” w pliku web.config. Aby określić zestaw, klasę lub metodę uruchamiania OWIN, dodaj plik appSetting owin: AppStartup z w pełni kwalifikowaną klasą startową lub nazwą metody konfiguracji w pliku web.config.

pojawia się na moim ekranie na najbardziej płonącej brzydkiej stronie błędu, jaka kiedykolwiek powstała w historii.

wprowadź opis obrazu tutaj

Próbowałem postępować zgodnie z instrukcjami na stronie, wstawiając owin: AutomaticAppStartup w config.

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

to nie rozwiązało problemu. Jakieś sugestie?

NVA
źródło
6
Zamiast tego <add key="owin:AppStartup" value="false"></add>mógłbyś spróbować <add key="owin:AutomaticAppStartup" value="false"></add>i sprawdzić, czy to działa? Ponadto kilka linków do pomocy: OWIN Startup Class Detection i Owin zapewniają klasę startową w pliku web.config (bez automatycznego wykrywania startowego)
Keyur PATEL
To załatwiło sprawę. Dziękuję również za zasoby. Moja wdzięczność @KeyurPATEL.
NVA,
2
Myślę, że brakuje Ci pliku startup.cs
Kurkula
2
Kurkula ma całkowitą rację. Nie zainstalowałeś systemu ASP.net auth tylko po to, aby wyrzucić go podczas uruchamiania. Brakuje Ci absolutnie pliku startup.cs w katalogu głównym projektu. Umieść ten kod w pliku .------------- przy użyciu Microsoft.Owin; using Owin; [assembly: OwinStartupAttribute (typeof (YOURPROJECT.Startup))] przestrzeń nazw YOURPROJECT {public częściowa klasa Startup {public void Configuration (IAppBuilder app) {ConfigureAuth (app); }}}
Paras Parmar,

Odpowiedzi:

171

Dodaj ten kod web.configpod <configuration>tagiem, jak pokazano na poniższym obrazku. Twój błąd powinien wtedy zniknąć.

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

Sprawdź obrazek poniżej

Heemanshu Bhalla
źródło
4
To jest rozwiązanie, a przynajmniej to rozwiązanie rozwiązało mój problem. Zaznacz odpowiedź jako rozwiązanie. Ten powinien być na szczycie ...
Mason,
1
Dzięki, zadziałało, ale czy ktoś może mi powiedzieć, co tracę, ustawiając wartość na false?
IKriKan
83

Chciałem się pozbyć OWIN w projekcie:

  1. Usuń odwołania OWIN i pakiety NuGet z projektu
  2. Wyczyść i odbuduj projekt
  3. Uruchom aplikację

Wtedy dostałem błąd OWIN. Te kroki nie pomogły , ponieważ OWIN.dll nadal znajdował się w katalogu bin / .

NAPRAWIĆ:

  1. Usuń bin / katalog ręcznie
  2. Przebuduj projekt
one_mile_run
źródło
12
lol - usunięcie folderów bin i obj jest zawsze poprawką dla dziwnych błędów zależności
matt.fc
4
Wcześniej pobrałem i wypróbowałem plik nuget SignalR, który z kolei dodał plik nuget owin. Pakiety zostały usunięte, ale musiałem również usunąć folder bin, aby działał.
mortb
Przybyłem tutaj po zainstalowaniu SignalR i przerwaniu przedsięwzięcia. Dziękuję Ci.
John Gerdsen,
Łatwo i szybko. Pracował dla mnie
Dash
odinstaluj pakiet owin również pomoże lub usunięcie wszystkich bibliotek dll posiadających owina z odniesień pomoże
Heemanshu Bhalla
23

Dla tych, którzy chcą, żeby to się zaczęło, <add key="owin:AutomaticAppStartup" value="false" />nie zadziała, ale poniższe zadziałały.

  1. Jeśli masz częściową klasę „Startup” w pliku Startup.Auth, utwórz kolejną częściową klasę Startup w katalogu głównym projektu.

  2. zdefiniuj atrybut owinstartup zestawu wskazujący na tę klasę

  3. utwórz metodę „Konfiguracja”

  4. odbuduj swoją aplikację

Można również utworzyć metodę „Configuration” i dodać atrybut Assembly do Startup.Auth, ale zrobienie tego w ten sposób pozwala zachować oddzielenie klasy Startup dzięki wykorzystaniu podziału definicji klasy C #. Przeczytaj więcej tutaj: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

Tak wyglądał mój plik 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);
        }
    }
}
robthedev
źródło
To zadziałało dla mnie, zdałem sobie sprawę, że dzieje się tak, gdy projekt ma kropkę w nazwie. Więc jeśli przestrzeń nazw przypomina „namespace ProjectNameSpace.ApiRest”, to zdefiniowanie zestawu, jak w przykładzie, naprawi problem.
karique
6

możesz nie mieć metody konfiguracji w klasie, o której wspomniałeś

<appSettings>
<add key="owin:AppStartup" value="WebApplication1.App_Start.Startup"/>

Nattachai Suteerapongpan
źródło
3

Otrzymałem ten błąd, ponieważ w kodzie była dodatkowa biała spacja

Zamiast

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

To było

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

Roshna Omer
źródło
3

Sprawdź, czy w projekcie została utworzona klasa Startup . To jest przykład:

using Microsoft.Owin;
using Owin;

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

namespace AuctionPortal
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}
szdrnja
źródło
Za korzystanie z tożsamości ASP.net. To jest rozwiązanie.
Paras Parmar
2

po prostu zastępuję

        using (WebApp.Start(url))

z

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

rozwiązał mój problem. Klasa o nazwie Startup została już zaimplementowana. jak wspomniano powyżej przez @robthedev

Abhay
źródło
2

Dodanie następującego klucza w pliku Web.config spowoduje usunięcie kodu

<appSettings>

  <add key="owin:AutomaticAppStartup" value="false" /> 
</appSettings>
Debendra Dash
źródło
1

Sprawdź, czy wybrano właściwy projekt startowy. Na początku miałem projekt interfejsu API sieci Web. To spowodowało ten błąd.

Wilkoteq
źródło
1

Wiem, że ten post jest stary, ale na wypadek, gdyby ktoś szukał tego samego błędu, spróbuj dodać

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

po tagu <appSettings>

a jeśli potem pojawi się następny błąd:

Błąd HTTP 401.0 - Nieautoryzowany komunikat o błędzie

dodaj kolejny kod po tagu, <system.web>który może znajdować się na początku

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

W moim przypadku jest:

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

Michał
źródło
0

Usunąłem wszystkie biblioteki DLL z gałęzi, która nie działała, a następnie skopiowałem wszystkie pliki DDl z mojej gałęzi, która działała, do mojej gałęzi, która nie działała. To rozwiązało problem.

Gabriel Girodo Domingos
źródło
0

po prostu wklej ten kod <add key="owin:AutomaticAppStartup" value="false" /> do Web.config Nie w web.config są dwa webconfig więc upewnij się, że zostanie wklejony do Web.Config

Gaurav soni
źródło
0

jeśli chcesz używać signalr, musisz dodać klasę startup.cs do swojego projektu

Kliknij prawym przyciskiem myszy w swoim projekcie, a następnie dodaj nowy element i wybierz klasę startową OWIN

następnie wewnątrz metody konfiguracji dodaj kod poniżej

app.MapSignalR();

Mam nadzieję, że ci się przyda

shahram.afshar
źródło
0

Dodaj klasę Startup.cs do katalogu głównego projektu z następnym kodem:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectName.Startup))]
namespace ProjectName
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}
José Ignacio Becerra Becerra
źródło
0

Jeśli wdrażasz na platformie Azure i pojawia się ten błąd. Po prostu usuń wszystkie pliki w witrynie (wykonaj kopię zapasową dowolnego pliku web.config, appsettings.json lub czegokolwiek, czego nie chcesz stracić) i wdróż ponownie. Pozostało kilka plików dll, które nie powinny znajdować się w lokacji, co powoduje, że Azure Portal uważa, że ​​musi używać OWIN.

nivs1978
źródło
0

Dodaj poniższy kod do pliku web.config, a następnie uruchom projekt ...

    <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>
amit kadam
źródło