Brak klasy startowej OWIN


226

Otrzymuję ten błąd, ponieważ mój projekt nie może znaleźć odwołania do OWINklasy startowej. Zainstalowałem nawet wszystkie pakiety referencyjne OWIN przez Nuget, wciąż otrzymując ten sam problem. Używam Visual Studio 2012i MVC4.

Podczas próby załadowania aplikacji wystąpiły następujące błędy.

  • Nie znaleziono zestawu zawierającego OwinStartupAttribute.
  • Nie znaleziono zestawu zawierającego Startup lub [AssemblyName] .Startup klasa. Aby wyłączyć wykrywanie uruchamiania OWIN, dodaj appSetting owin: AutomaticAppStartup z wartością „false” w pliku web.config. Aby określić zestaw startowy, klasę lub metodę uruchamiania OWIN, dodaj appSetting owin: AppStartup z pełną nazwą klasy uruchamiania lub metodą konfiguracji w pliku web.config.

7
Czy masz Startup.csw projekcie?
christiandev,

4
Czy twój zestaw zawiera OwinStartupAttribute? Czy Twój zespół Startuplub [AssemblyName].Startupklasy? Czy wyłączyłeś wykrywanie uruchamiania OWIN, dodając appSetting owin:AutomaticAppStartupo wartości „false” w pliku web.config? Czy zrobiłeś jedną z tych rzeczy i zastanawiasz się, dlaczego to nie działa? Jakie jest Twoje pytanie?
ta.speot.is

1
To jest myśl. Nie pokazuje klasy startowej OWIN, gdy próbuję dodać nowy przedmiot w moim projekcie. Szukałem w Google, czy napisałem, że dodaj referencje OWIN przez nugety i zrobiłem to samo. Wciąż nie można dodać klasy.
Krunal Patil,

Odpowiedzi:


213

Stwórz jedną klasę o nazwie Startup, która pomoże ci ...

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

116
Ponadto, jeśli twoja klasa startowa jakoś nie znajduje się w domyślnej przestrzeni nazw, dodaj internetowy wiersz konfiguracji do <appSettings>obszaru, takiego jak:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray

7
Obecnie istnieją 3 sposoby konfiguracji owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider,

22
Oprócz komentarzu @ Andrew-szare, strzelaj [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]do AssemblyInfo.csbędzie działać zbyt.
Achilles

14
potrzebujesz również pakietu Microsoft.Owin.Host.SystemWeb, w przeciwnym razie uruchomienie nie jest nazywane
rjlopes

7
Możemy również dodać tę linię tuż przed przestrzenią nazw klasy Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen,

194

W naszym projekcie nie potrzebowaliśmy funkcji OWIN, więc usunęliśmy wszystkie odwołania do owin z początkowego projektu szablonu ASP.NET MVC. Problem wystąpił po usunięciu klasy startowej OWIN.

Problem polegał na tym, że dll owin był w moim folderze bin. Kiedy je usunąłem, problem został rozwiązany. Powinieneś je usunąć, usuwając folder bin. Czyste rozwiązanie nie usuwa tych bibliotek DLL.

Jakoś usługi IIS nadal wykonują biblioteki DLL OWIN, gdy znajdują się w folderze bin.


6
Miałem też ten problem i musiałem się upewnić, że odwołania nie odwołują się do żadnych bibliotek DLL OWIN.
haker

2
Ten sam problem i to samo rozwiązanie. Jednak w moim przypadku miałem jedną gałąź kodu z Signalr i jedną bez. Podczas przełączania gałęzi biblioteki DLL Signalr pozostały nawet po czyszczeniu. Musiałem je ręcznie usunąć.
Kywillis

3
Uwaga: dosłownie oznacza to, że folder bin oznacza nie tylko użycie „Clean Solution” z Visual Studio, które w moim przypadku usuwało większość bibliotek DLL, ale nie wszystkie.
Alan Macdonald

1
Coś, co działało dla mnie, to po usunięciu referencji OWIN i nadal nie działa poprawnie dodawanie <add key="owin:AutomaticAppStartup" value="false"/>jako appSetting. Tylko kilka porad dla osób, które próbują tego i nadal się to nie udaje.
LatentDenis,

1
W przypadku osób, dla których to nie działało, upewnij się, że nawet po usunięciu folderów bin, które przechodzisz do odwołań do projektu i usuwasz odniesienia do biblioteki DLL Owin. W moim przypadku usunąłem foldery bin, ale zapomniałem, że nadal mam (nieużywane) odniesienia w pliku .csproj.
akousmata,

104

W Visual Studio 2013 RC2 jest do tego szablon. Po prostu dodaj go do folderu App_Start.

wprowadź opis zdjęcia tutaj

Szablon tworzy taką klasę:

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 również tego potrzebował
Tom Stickel

2
Zrobiło to dla mnie - utworzyłem plik Startup.cs i wypełniłem go poprawnie, ale nie zauważyłem, że musi znajdować się w folderze App_Start. Działa dobrze na mojej maszynie deweloperskiej, ale po opublikowaniu wystąpił błąd. Dzięki!
Jon Peterson

Pamiętaj, aby dodać app.MapSignalR (); w konfiguracji (aplikacja IAppBuilder), w przeciwnym wypadku 404 jest zwracane podczas dzwonienia do [YourSite] / signalr
Kasper Halvas Jensen

45

Jeśli nie chcesz używać uruchamiania OWIN, powinieneś dodać to do pliku web.config :

W obszarze AppSettings dodaj następujący wiersz:

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

Tak powinno to wyglądać w pliku web.config:

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

1
To właściwie jedna z pełnych odpowiedzi. Jeśli nie interesują Cię ustawienia web.config, trudno jest
wymyślić

25

Poszukaj Startup.cspliku, być może brakuje jednego z nich. Ten plik jest punktem wejścia dla OWIN, więc wygląda na to, że go brakuje. Spójrz OWIN Startup classtutaj, aby zrozumieć, co się dzieje.

Jak określa błąd, możesz to wyłączyć w pliku web.config, wykonując następujące czynności ...

Aby wyłączyć wykrywanie uruchamiania OWIN, dodaj appSetting owin: AutomaticAppStartup z wartością „false” w pliku web.config


5
Dodałem <add key="owin:AutomaticAppStartup" value="false" />do <appSettings>grupy i plik Startup.cs nie był już potrzebny.
webworm

@webworm, wspominam o tym powyżej.
christiandev

2
@christiandev co dokładnie <add key="owin:AutomaticAppStartup" value="false" />zrobi? Czy wyłączy jakąkolwiek funkcjonalność? Czy musimy później uruchomić aplikację, aby móc korzystać z dowolnej funkcji OWIN?
Flo,

18

Najpierw musisz utworzyć plik startowy, a następnie musisz określić ustawienia regionalne tego pliku w pliku web.config, wewnątrz tagu appSettings w tym wierszu:

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

To rozwiązało mój problem.


11

Miałem ten problem, rozumiem, że to nie było złe w przypadku OP, ale w moim przypadku miałem klasę startową, po prostu domyślnie jej nie znajdowałem.

Moim problemem było to, że miałem spacje w nazwie zestawu, a zatem domyślna przestrzeń nazw była inna niż nazwa zestawu, stąd przestrzeń nazw dla klasy startowej była inna niż nazwa zestawu.

Jak sugeruje błąd, zgodnie z konwencją szuka on [Nazwa zestawu]. Uruchomienie dla klasy ... więc upewnij się, że przestrzeń nazw dla twojej klasy startowej jest taka sama jak nazwa zestawu. Naprawiono problem dla mnie.


1
Miałem podobny problem. Nazwa mojego projektu zawierała myślnik „-”, który został przekonwertowany przez VS na podkreślenie, więc przestrzeń nazw i klasa startowa były zasadniczo różne.
LDJ

7

Wypróbowałem tutaj większość zalecanych poprawek i nadal nie mogłem uniknąć komunikatu o błędzie. W końcu wykonałem kombinację kilku zalecanych rozwiązań:

  1. Dodano ten wpis na górze AppSettingssekcji mojego pliku web.config :

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

  2. Rozwiń węzeł Referencje w moim projekcie i usunąłem wszystko, co zawierało ciąg OWIN. (Czułem się bezpiecznie, ponieważ moja organizacja nie jest (i nie będzie) aktywnym dostawcą OWIN w przyszłości)

Następnie kliknąłem Runi strona główna została załadowana od razu.


4

W moim przypadku zmieniłem nazwę projektu i zmieniłem jego strukturę folderów. Odkryłem, że aktualizacja RootNameSpace i AssemblyName w pliku .csproj, w którym zgłaszany był błąd, rozwiązała błąd. Jeśli zmodyfikowałeś ścieżki swojego projektu, polecam to również sprawdzić.

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

Święte krowy, cześć wam, stary, utknąłem na nim jak na zawsze i nie znalazłem rozwiązania, dopóki go nie przeczytałem, a nazwa zestawu nie została zaktualizowana po ręcznej zmianie. Teraz działa! Dziękuję bardzo!
Mason

3

Mój przypadek? Miałem plik startowy, ale jest wykluczony w projekcie. Właśnie to załączyłem i błąd został.


3

Można to spotkać również w programie Visual Studio 2015, gdy używasz usługi Azure AD z projektem MVC. Tutaj tworzy plik startowy jako Startup.Auth.cs w folderze App_Start, ale brakuje go

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

Dodaj go i powinieneś już iść. Dzieje się to przed rozpoczęciem przestrzeni nazw.


2

Możliwe jest również uzyskanie tego wyjątku (nawet jeśli masz poprawnie skonfigurowaną klasę startową), jeśli działa za pośrednictwem IIS Express, a katalog wirtualny nie jest poprawnie skonfigurowany.

Kiedy napotkałem ten problem, rozwiązaniem było po prostu naciśnięcie przycisku „Utwórz katalog wirtualny” na karcie „Internet” właściwości projektu (Korzystanie z programu Visual Studio 2013)


2

Czy naprawdę próbujesz dodać OWIN do swojego projektu, czy jest to coś nieoczekiwanego?

  1. W przypadku, gdy chcesz dodać OWIN, możesz dodać klasę startową.

  2. W przypadku , gdy nie potrzebujesz żadnego odniesienia do Owin :

    usuń Owin.dll z folderu / bin .

    Owin.dll to ten, który próbuje zidentyfikować klasę uruchamiania.



1

Natknąłem się na ten problem po eksperymentach z SignalR, a następnie usunięciu go z projektu. Aby rozwiązać ten problem, musiałem usunąć zawartość folderu bin dla witryny na zdalnym serwerze, a następnie opublikować ponownie.


1

Po prostu sprawdź, czy packages.configplik jest zaewidencjonowany (po wykluczeniu w eksploratorze pojawi się czerwony symbol braku wpisu). Z jakiegoś dziwnego powodu mój został wykluczony i spowodował ten problem.


0

Wciąż pojawiał się ten sam błąd, kiedy zaczynałem projekt przy użyciu pulpitu nawigacyjnego łącza przeglądarki w VS2013. Ale kiedy uruchomię mój projekt w trybie debugowania, zadziała. Nie mogłem zrozumieć, dlaczego i jak uruchomić Dashboard Link Dashboard. Sprawdziłem plik startowy, wszystko było w porządku, dodałem linię appSetting zgodnie z opisem w niektórych odpowiedziach „”, ale nic nie działało.

Najwyraźniej popełniłem błąd, klikając link NIEWŁAŚCIWY na pulpicie nawigacyjnym przeglądarki. Wszystkie łącza do projektów rozwiązań są wyświetlane w pulpicie nawigacyjnym przeglądarki, ale działa tylko łącze do projektów uruchamiania. Musisz kliknąć link projektu startowego.

Przykład: Mam 2 projekty, oba pokazane w pulpicie nawigacyjnym przeglądarki, ale tylko ten oznaczony jako projekt startowy będzie działał (pokazuje się jako pogrubiony w Eksploratorze rozwiązań). Pomyślałem, że może to pomóc komuś zrobić to, co oczywiste, kosztuje mnie 2 dni, aby natknąć się na oczywiste.


0

Miałem ten problem, gdy otrzymałem najnowszą wersję TFS, podczas gdy inne projekty były otwarte w wielu instancjach VS. Mam już wszystkie poprawki powyżej. Ponowne otwarcie VS naprawiło problem.


0

W moim przypadku zalogowałem się na serwerze ftp. Wykonano kopię zapasową bieżących plików na serwerze ftp. Usuń wszystkie pliki ręcznie z serwera ftp. Czyste rozwiązanie, ponownie wdrożono kod. Zadziałało.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.