OWIN Startup Class fehlt

226

Ich erhalte diesen Fehler, da mein Projekt die Referenz für die OWINStartklasse nicht finden kann . Ich habe sogar alle OWIN-Referenzpakete über Nuget installiert, wobei immer noch das gleiche Problem auftritt. Ich benutze Visual Studio 2012und MVC4.

Die folgenden Fehler sind beim Laden der App aufgetreten.

  • Es wurde keine Assembly gefunden, die ein OwinStartupAttribute enthält.
  • Es wurde keine Assembly gefunden, die eine Startup- oder [AssemblyName] .Startup-Klasse enthält. Um die OWIN-Starterkennung zu deaktivieren, fügen Sie in Ihrer web.config die appSetting owin: AutomaticAppStartup mit dem Wert "false" hinzu. Um die OWIN-Startassembly, -Klasse oder -Methode anzugeben, fügen Sie appSetting owin: AppStartup mit dem Namen der vollständig qualifizierten Startklasse oder Konfigurationsmethode in Ihrer web.config hinzu.
Krunal Patil
quelle
7
Hast du eine Startup.csim Projekt?
Christiandev
4
Enthält Ihre Baugruppe eine OwinStartupAttribute? Hat Ihre Versammlung eine Startupoder eine [AssemblyName].StartupKlasse? Haben Sie die OWIN-Starterkennung deaktiviert, indem Sie die appSetting owin:AutomaticAppStartupmit dem Wert "false" in Ihrer web.config hinzugefügt haben? Haben Sie eines dieser Dinge getan und fragen sich, warum es nicht funktioniert? Was ist deine Frage?
ta.speot.is
1
Das ist es. Die OWIN-Startklasse wird nicht angezeigt, wenn ich versuche, meinem Projekt ein neues Element hinzuzufügen. Ich habe auf Google gesucht, es heißt, OWIN-Referenzen über Nugets hinzufügen, und ich habe das Gleiche getan. Immer noch nicht die Klasse zum Hinzufügen bekommen.
Krunal Patil

Antworten:

213

Erstellen Sie eine Klasse mit Name Startup Dies wird Ihnen helfen ..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
Cracker
quelle
116
Wenn sich Ihre Startklasse irgendwie nicht in Ihrem Standard-Namensraum befindet, fügen Sie außerdem eine Webkonfigurationszeile zu dem <appSettings>Bereich hinzu, wie:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray
7
Heutzutage gibt es drei Möglichkeiten, owin zu konfigurieren: asp.net/aspnet/overview/owin-and-katana/…
Jaider
22
Neben @ Andrew-grau Kommentar, setzt [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]in AssemblyInfo.csfunktionieren würde.
Achilles
14
Sie benötigen auch das Microsoft.Owin.Host.SystemWeb-Paket, andernfalls wird Startup nicht aufgerufen
rjlopes
7
Wir könnten diese Zeile auch kurz vor dem Namespace der Startup-Klasse hinzufügen: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen
194

In unserem Projekt brauchten wir die OWIN-Funktionalität nicht, daher haben wir alle Owin-Referenzen aus dem ursprünglichen ASP.NET MVC-Vorlagenprojekt entfernt. Das Problem trat nach dem Entfernen der OWIN-Startklasse auf.

Das Problem war die zusätzliche Owin-DLL in meinem Bin-Ordner. Als ich sie löschte, wurde das Problem behoben. Sie sollten sie löschen, indem Sie den Ordner bin löschen. Clean Solution löscht diese DLLs nicht.

Irgendwie führt IIS die OWIN-DLLs immer noch aus, wenn sie sich im bin-Ordner befinden.

Hüseyin Yağlı
quelle
6
Ich hatte auch dieses Problem und musste auch sicherstellen, dass die Referenzen keine OWIN-DLLs referenzierten.
Hacker
2
Gleiches Problem und gleiche Lösung. In meinem Fall hatte ich jedoch einen Codezweig mit Signalr und einen ohne. Beim Wechseln der Zweige blieben die Signalr-DLLs auch nach einer Bereinigung erhalten. Ich musste sie manuell löschen.
Kywillis
3
Nur eine Anmerkung, um dies wörtlich zu sagen, bedeutet, dass der Ordner bin nicht nur "Clean Solution" aus Visual Studio verwendet, wodurch in meinem Fall die meisten DLLs gelöscht wurden, aber nicht alle.
Alan Macdonald
1
Etwas, das für mich funktioniert hat, ist nach dem Löschen von OWIN-Referenzen und es funktioniert immer noch nicht richtig, <add key="owin:AutomaticAppStartup" value="false"/>als AppSetting hinzugefügt. Nur ein paar Ratschläge für Leute, die dies versuchen und es immer noch nicht gelingt.
LatentDenis
1
Stellen Sie für Personen, für die dies nicht funktioniert hat, sicher, dass Sie auch nach dem Löschen der Bin-Ordner in die Projektreferenzen wechseln und Verweise auf die Owin-DLLs entfernen. In meinem Fall habe ich die Bin-Ordner gelöscht, aber vergessen, dass ich immer noch die (nicht verwendeten) Referenzen in der .csproj-Datei habe.
Akousmata
104

In Visual Studio 2013 RC2 gibt es dafür eine Vorlage. Fügen Sie es einfach dem Ordner App_Start hinzu.

Geben Sie hier die Bildbeschreibung ein

Die Vorlage erzeugt eine solche Klasse:

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
        }
    }
}
Timuçin
quelle
3
VS2015 brauchte das auch
Tom Stickel
2
Dies hat es für mich getan - ich habe die Datei Startup.cs erstellt und korrekt ausgefüllt, aber übersehen, dass sie sich im Ordner App_Start befinden muss. Lief gut auf meiner Entwicklungsmaschine, aber einmal veröffentlicht war ein Fehler. Vielen Dank!
Jon Peterson
Denken Sie daran, app.MapSignalR () hinzuzufügen; In der Konfiguration (IAppBuilder-App) wird 404 zurückgegeben, wenn [YourSite] / signalr
Kasper Halvas Jensen
45

Wenn Sie den OWIN-Start nicht verwenden möchten, sollten Sie Folgendes zu Ihrer Datei web.config hinzufügen :

Fügen Sie unter AppSettings die folgende Zeile hinzu:

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

So sollte es in Ihrer web.config aussehen:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Yonatan Ayalon
quelle
1
Dies ist tatsächlich eine der vollständigen Antworten. Wenn Sie nicht sehr mit den Einstellungen von web.config vertraut sind, ist es schwer zu verstehen, dass Sie einen Schlüssel und einen Wert in die XML-Datei
einfügen sollten
25

Suchen Sie nach der Startup.csDatei, möglicherweise fehlt eine davon. Diese Datei ist der Einstiegspunkt für OWIN. Es scheint also, dass dies fehlt. Schauen Sie sich OWIN Startup classhier an, um zu verstehen, was los ist.

Wie in Ihrem Fehler angegeben, können Sie dies in der Datei web.config wie folgt deaktivieren:

Um die OWIN-Starterkennung zu deaktivieren, fügen Sie in Ihrer web.config die appSetting owin: AutomaticAppStartup mit dem Wert "false" hinzu

christiandev
quelle
5
Ich <add key="owin:AutomaticAppStartup" value="false" />habe der <appSettings>Gruppe hinzugefügt und die Startup.cs wurde nicht mehr benötigt.
Webworm
@ Webworm, das erwähne ich oben.
Christiandev
2
@christiandev was genau wird <add key="owin:AutomaticAppStartup" value="false" />tun? Wird es irgendeine Funktionalität deaktivieren? Müssen wir die App später starten, um OWIN-Funktionen nutzen zu können?
Flo
18

Zuerst müssen Sie Ihre Startdatei erstellen und nachdem Sie das Gebietsschema dieser Datei in web.config im appSettings-Tag mit dieser Zeile angegeben haben:

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

Es hat mein Problem gelöst.

Slaters
quelle
11

Ich hatte dieses Problem, verstehe, dass dies im Fall des OP nicht falsch war, aber in meinem Fall hatte ich eine Startup-Klasse, die es einfach nicht standardmäßig fand.

Mein Problem war, dass ich Leerzeichen in meinem Assembly-Namen hatte und daher der Standard-Namespace vom Assembly-Namen abweicht. Daher unterscheidet sich der Namespace für die Startklasse vom Assembly-Namen.

Wie der Fehler andeutet, sucht es gemäß Konvention nach [Assembly Name] .Startup für die Klasse ... Stellen Sie daher sicher, dass der Namespace für Ihre Startup-Klasse mit dem Assembly-Namen übereinstimmt. Das Problem wurde für mich behoben.

TCC
quelle
1
Ich hatte ein ähnliches Problem. Mein Projektname enthielt einen '-' Bindestrich, der von VS in einen Unterstrich konvertiert wurde, sodass sich der Namespace und die Startklasse wesentlich unterschieden.
LDJ
7

Ich habe die meisten der hier empfohlenen Korrekturen ausprobiert und konnte die Fehlermeldung immer noch nicht vermeiden. Ich habe schließlich eine Kombination einiger empfohlener Lösungen durchgeführt:

  1. Dieser Eintrag wurde oben im AppSettingsAbschnitt meiner web.config hinzugefügt :

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

  2. Erweitert den Knoten Referenzen meines Projekts und löscht alles, was die Zeichenfolge enthält OWIN. (Ich habe mich dabei sicher gefühlt, da meine Organisation in Zukunft kein aktiver OWIN-Anbieter ist (und auch nicht sein wird).)

Ich habe dann geklickt Runund meine Homepage richtig geladen.

Jason Marsell
quelle
4

In meinem Fall hatte ich das Projekt umbenannt und die Ordnerstruktur geändert. Ich habe festgestellt, dass das Aktualisieren des RootNameSpace und des AssemblyName in der .csproj-Datei, in der der Fehler ausgelöst wurde, den Fehler behoben hat. Wenn Sie die Pfade Ihres Projekts geändert haben, würde ich empfehlen, dies ebenfalls zu überprüfen.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Verlernt
quelle
Ein großes Lob an die Heilige Kuh, Bruder, war wie für immer daran festgehalten und fand keine Lösung, bis ich dies las. Der AssemblyName wurde nicht aktualisiert, nachdem ich ihn manuell geändert hatte. Jetzt gehts! Ich danke dir sehr!
Mason
3

Mein Fall? Ich hatte eine Startdatei, diese ist jedoch im Projekt ausgeschlossen. Ich habe es gerade aufgenommen und der Fehler ist geblieben.

Gellie Ann
quelle
3

Dies kann auch in Visual Studio 2015 auftreten, wenn Sie Azure AD mit einem MVC-Projekt verwenden. Hier wird die Startdatei als Startup.Auth.cs im Ordner App_Start erstellt, es fehlt jedoch die

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

Fügen Sie es also hinzu und Sie sollten bereit sein zu gehen. Dies geschieht vor dem Start des Namespace.

Diceyus
quelle
2

Es ist auch möglich, diese Ausnahme zu erhalten (selbst wenn Sie eine korrekt konfigurierte Startklasse haben), wenn Sie über IIS Express ausgeführt werden und Ihr virtuelles Verzeichnis nicht korrekt konfiguriert ist.

Als ich auf dieses Problem stieß, bestand die Lösung darin, einfach auf die Schaltfläche "Virtuelles Verzeichnis erstellen" auf der Registerkarte "Web" der Projekteigenschaften zu klicken (Verwenden von Visual Studio 2013).

mcarter
quelle
2

Versuchen Sie wirklich, OWIN zu Ihrem Projekt hinzuzufügen, oder ist dies etwas Unerwartetes?

  1. Wenn Sie OWIN hinzufügen möchten, müssen Sie eine Startup-Klasse hinzufügen.

  2. Falls Sie keinen Verweis auf Owin benötigen :

    Löschen Sie Owin.dll aus Ihrem Ordner / bin .

    Owin.dll ist derjenige, der versucht, die Startup-Klasse zu identifizieren.

Despuestambien
quelle
1

Obwohl ich nicht vollständig erklären kann, warum dies das Problem für mich gelöst hat, stieß ich auf ein solches Problem, nachdem ich mein API-Projekt so geändert hatte, dass es in separate Ordner \debugund \releaseOrdner umgewandelt wurde. Nachdem ich diese Änderung zurückgesetzt hatte, um sie in einen einzelnen \binOrdner zu erstellen, funktionierten die Dinge.

Ich habe meine Erfahrungen hier niedergeschrieben: Die OWIN-Startklasse kann nach dem Umbenennen der ASP.NET-Projektdatei nicht in IIS Express ausgeführt werden

Sam Storie
quelle
1

Ich bin auf dieses Problem gestoßen, nachdem ich mit SignalR experimentiert und es dann aus dem Projekt entfernt hatte. Um dies zu beheben, musste ich den Inhalt des Ordners bin für die Site auf dem Remote-Server löschen und dann erneut veröffentlichen.

Owen Pauling
quelle
1

Überprüfen Sie einfach, ob Ihre packages.configDatei eingecheckt ist (wenn sie ausgeschlossen ist, wird im Explorer ein rotes Symbol für die Nichteintragung angezeigt). Aus irgendeinem bizarren Grund wurde meiner ausgeschlossen und verursachte dieses Problem.

Ian
quelle
0

Beim Starten meines Projekts über das Browser Link Dashboard in VS2013 wurde immer wieder derselbe Fehler angezeigt. Aber wenn ich mein Projekt im Debug-Modus ausführte, würde es funktionieren. Ich konnte nicht herausfinden, warum und wie das Browser Link Dashboard funktioniert. Ich habe die Startdatei überprüft, es war in Ordnung, habe die Zeile appSetting hinzugefügt, wie in einigen der Antworten "" beschrieben, aber nichts hat funktioniert.

Anscheinend habe ich falsch geklickt, indem ich im Browser-Dashboard auf den Link FALSCH geklickt habe. Alle Links zu Lösungsprojekten werden im Browser-Dashboard angezeigt, aber nur der Link zu Startprojekten funktioniert. Sie müssen auf den Link des Startprojekts klicken.

Beispiel: Ich habe 2 Projekte, die beide im Browser-Dashboard angezeigt werden, aber nur das als Startprojekt markierte Projekt funktioniert (wird im Projektmappen-Explorer fett angezeigt). Ich dachte, dies könnte jemandem helfen, das Offensichtliche zu tun. Es hat mich 2 gekostet Tage, um auf das Offensichtliche zu stoßen.

Alikuli
quelle
0

Ich hatte dieses Problem, als ich die neueste Version von TFS erhielt, während andere Projekte in mehreren Instanzen von VS geöffnet waren. Ich habe bereits alle Korrekturen oben. Durch erneutes Öffnen von VS wurde das Problem behoben.

PersyJack
quelle
0

In meinem Fall habe ich mich beim FTP-Server angemeldet. Sicherung der aktuellen Dateien auf dem FTP-Server. Löschen Sie alle Dateien manuell vom FTP-Server. Saubere Lösung, Code erneut bereitgestellt. Es funktionierte.

Kurkula
quelle