web-dev-qa-db-de.com

OwinStartup wird nicht ausgelöst

Ich hatte den OwinStartup-Konfigurationscode einwandfrei und dann funktionierte er nicht mehr. Leider bin ich mir nicht sicher, was ich genau getan habe, damit ich nicht mehr arbeite, und es fällt mir wirklich schwer, es herauszufinden. 

Um sicherzugehen, dass ich die Grundlagen abgedeckt habe, habe ich das Kontrollkästchen doppelt überprüft 

[Assembly:OwinStartup(typeof(WebApplication.Startup))] 

attribut richtig zugewiesen und sichergestellt, dass ich keine AppSetting für owin habe: AutomaticAppStartup, das auf false gesetzt ist. Daher habe ich eine Einstellung auf true gesetzt, um sicher zu sein, da zuvor noch nichts vorhanden war.

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

Ich habe auch versucht, das appSetting gezielt aufzurufen:

<add key="owin:appStartup" value="WebApplication.Startup" />

Bevor es aufhörte zu arbeiten, habe ich die Microsoft.Owin.Security NuGet-Pakete auf 2.0.2 aktualisiert, also habe ich versucht, sie auf 2.0.1 umzustellen (das war ein Schmerz), aber daran hat sich nichts geändert. Ich habe WebActivator für das Projekt installiert und benutze das, um andere Dinge zu bootstrappen, aber ich habe das auf einer neuen WebApplication-Vorlage getestet und es funktioniert dort, ich glaube nicht, dass dies der Täter ist.

Ich habe auch versucht, meine Startklasse zu entfernen und mit Visual Studio eine neue Klasse mit dem Typ der OWIN-Startklasse in "Neues Element hinzufügen" hinzuzufügen. Dies wird auch nicht aufgerufen. Als Nächstes habe ich versucht, eine zweite Startup-Klasse hinzuzufügen, da ich weiß, dass eine Ausnahme ausgelöst wird, wenn mehr als ein OwinStartup-Attribut definiert ist, es jedoch keine Ausnahme auslöst.

Nicht sicher, was Sie sonst noch versuchen sollten. Irgendwelche Gedanken?

Update

Es stellte sich heraus, dass Resharper den Verweis auf Microsoft.Owin.Host.SystemWeb entfernt hat, als ich nicht verwendete Verweise entfernt habe.

288
Jeff Treuting

Stellen Sie sicher, dass Sie das Microsoft.Owin.Host.SystemWeb-Paket im Projekt installiert haben. Dieses Paket wird für die Starterkennung in gehosteten IIS - Anwendungen benötigt. Weitere Informationen finden Sie in this article. 

655
Praburaj

Wenn Sie ein Upgrade von einer älteren MVC-Version durchgeführt haben, stellen Sie sicher, dass Sie dies nicht getan haben

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

in Ihrem web.config. Der Aufruf der Startlogik wird unterdrückt.

Ändern Sie es stattdessen in true.

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

Ich weiß, dass du das schon erwähnt hast, aber manchmal lesen Leute (wie ich) nicht die ganze Frage und springen einfach zu den Antworten ...

Irgendwo auf der Linie - als ich auf MVC 5 umgestiegen bin, wurde dies hinzugefügt und ich habe es bis heute nicht gesehen.

49
Simon_Weaver

Alternative Antwort auf das ursprünglich diskutierte Problem - Owin "feuert nicht". In meinem Fall dachte ich stundenlang daran, dass es nicht feuern konnte, weil ich keinen Haltepunkt setzen konnte.

Beim Debuggen von OWIN-Start in Visual Studio

  • IIS Express - Beim Ausführen von "F5" wird der OWIN-Startcode unterbrochen

  • IIS - Das Ausführen von "F5" bricht erst ab, nachdem der OWIN-Code (und global.asax) geladen wurde. Wenn Sie eine Verbindung zu W3P.exe herstellen, können Sie darauf zugreifen.

46
Aaron Sherman

Wenn Sie Probleme beim Debuggen des Codes in der Startup-Klasse haben, hatte ich auch dieses Problem - oder ich dachte, ich hätte es getan. Der Code wurde ausgelöst, aber ich glaube, es passiert, bevor der Debugger angehängt wurde. Sie können also keine Haltepunkte im Code setzen und sehen, was passiert.

Sie können dies beweisen, indem Sie in der Configuration-Methode der Startup-Klasse eine Ausnahme auslösen.

24
Remotec

TIPPEN BEHEBEN

Wenn das Debuggen nicht funktioniert, versuchen Sie es mit IIS Express oder versuchen Sie es mit der folgenden Methode für lokales IIS

Verwendung von local IIS  

Aus irgendeinem Grund ermöglicht diese Methode das Debuggen dieser Methode:

  1. Fordern Sie eine Webseite an
  2. Anhängen an den Prozess w3wp.exe
  3. Berühren Sie die Datei web.config
  4. Fordern Sie eine Webseite an

Extra Spitze

Vielleicht wird dadurch ein Cache geleert:

  1. Fügen Sie in der Datei web.config das Attribut OptimizeCompilations mit einem falschen Wert hinzu

    <compilation debug = "true" ... OptimizeCompilations = "false"> 

  2. Site ausführen

  3. Machen Sie die Änderung in web.config rückgängig
14
Rasmus

Ich hatte ein ähnliches Problem wie das Löschen temporärer ASP.NET-Dateien. Hoffe das hilft jemandem.

12
randomsolutions

Ich hatte das gleiche Problem. Das Paket Microsoft.Owin.Host.SystemWeb wurde installiert, aber während der Installation konnte NuGet die DLL aus irgendeinem Grund nicht als Referenz hinzufügen. Stellen Sie sicher, dass Ihr Projekt diese Referenz hat. Wenn nicht, können Sie versuchen, eine Neuinstallation durchzuführen:

update-package Microsoft.Owin.Host.SystemWeb -reinstall

Ich hatte einen Fehler wie folgt bei der Neuinstallation, aber irgendwie hat es funktioniert:

Systemaufruf fehlgeschlagen (Ausnahme von HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))

10

In meinem Fall wurde der Anwendungspool IIS nicht auf v4 gesetzt. Es war v2.

Das AppPool wurde in v4 geändert und alles war in Ordnung.

2
Grey Wolf

In meinem Fall ist dieses Microsoft.Owin.Host.SystemWeb-Paket im Projekt vorhanden.

In web.config sind jedoch nicht zwei Tags enthalten.

<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="namespace.className.methodName" />

nach dem Hinzufügen funktioniert es problemlos.

1
ABB

In meinem Fall wird der Ausgabepfad meiner Website von jemandem geändert, der IIS Express lädt sogar OWIN nicht und die Setup-Klasse wird natürlich nicht erreicht. Nachdem ich den Ausgabepfad als "bin \" eingestellt habe, funktioniert er gut.

1
Sean Song

In meinem Fall hatte meine web.config

<authorization>
  <allow users="?" />
</authorization>

Um es zu zwingen, auf Owin zurückzugreifen, musste ich es sein

<authorization>
  <deny users="*" />
</authorization>
1
sirdank

Ich hatte das gleiche Problem, als ich Owin zu einem vorhandenen Webprojekt hinzufügte. Ich fand schließlich, dass das Problem in der Datei web.config auftrat.

<assemblies>
  <remove Assembly="*" />
  <add Assembly="System.Web.Mvc" />
  <add Assembly="System.Web.WebPages" />

   ...

</assemblies>

Das Entfernen von Assembly = "*" verursachte das Problem. Wenn ich diese Zeile entferne, lief der Owin-Startcode. Ich ändere es schließlich zu folgendem und es hat perfekt funktioniert

<assemblies>
  <remove Assembly="*" />
  <add Assembly="Microsoft.Owin.Host.SystemWeb" />
  <add Assembly="System.Web.Mvc" />
  <add Assembly="System.Web.WebPages" />
  <add Assembly="System.Web.Helpers" />
...
</assemblies>
0
James Rapson

Nachdem eine Klassenbibliothek in ein Webanwendungsprojekt konvertiert wurde , bin ich darauf gestoßen und wurde hartnäckig. Es stellte sich heraus, dass ich in meiner .csProj-Datei Folgendes hatte:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>Prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>Prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
  • so bauen Sie die verschiedenen DLLs in einen Unterordner des bin-Ordners (der ifc. nicht funktioniert). Die Lösung bestand darin, beide Textinhalte für OutputPath in nur bin\ zu ändern.

Ich denke, was einige Leute oben anstrebten, ist, wenn Sie Ihren OWIN-Server programmatisch "zum Leben erwecken" wollen, würden Sie so etwas nennen: 

using Microsoft.Owin.Hosting;

    IDisposable _server = WebApp.Start<StartupMethod>("http://+:5000"); 
              // Start Accepting HTTP via all interfaces on port 5000

Nach diesem Aufruf wird der Aufruf von StartupMethod () im Debugger ausgelöst

0
JoeHz

Für mich war es, weil sie nicht im selben Namensraum liegen. Nachdem ich meinen AppStart aus "project.Startup.AppStart" entfernt habe und beide Startup.cs und Startup.Auth.cs mit dem Namespace "project.Startup" lassen, funktioniert alles wieder einwandfrei.

Ich hoffe es hilft!

0
Fábio Carvalho

Ich habe mich mit vielen Vorschlägen in diesem Beitrag herumgespielt.

Ich hatte folgendes, konnte aber immer noch nicht an einem Haltepunkt landen. Das Auslösen einer Ausnahme bewies, dass der Code eingegeben wurde.

<appSettings>
...
  <add key="owin:AutomaticAppStartup" value="true" />
  <add key="owin:appStartup" value="SSOResource.Startup, SSOResource" />
...
</appSettings>

Schließlich habe ich aus Verzweiflung Projekt-> Eigenschaften betrachtet und dann im WEB-Abschnitt auch das Kontrollkästchen NATIVE CODE aktiviert (ASP.NET sollte bereits aktiviert sein).

Das hat es endlich für mich behoben.

Hinweis: Ich verwende Visual Studio 2017 Professional.

0

Ich bin mir nicht sicher, ob dies jemandem trotzdem helfen wird, aber ich habe alle oben genannten Lösungen (und einige andere Einträge) ohne Erfolg gemacht. 

Was das Problem an meinem Ende behoben hat, war, einen Backslash an den Wert von RedirectUri in der web.config (verrückt, ich weiß!) Zu setzen. RedirectUri ist ein Parameter in UseOpenIdConnectAuthentication.

Also statt:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home" />

Mach das:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home/" />

Außerdem wurde die Antwort-URL in den Azure-App-Einstellungen aktualisiert. 

Das hat irgendwie dazu geführt, dass das Startup wie erwartet ausgeführt wurde (wahrscheinlich etwas Cache gelöscht), und die Haltepunkte feuern jetzt.

Zu Ihrer Information. Ich habe meinen Code von hier aus modelliert: https://github.com/microsoftgraph/aspnet-connect-sample

0
niki b

Wenn dieses Problem beim Hosten von IIS auftritt, jedoch nicht beim Debuggen von F5, versuchen Sie, eine neue Anwendung in IIS zu erstellen.

Das hat es für mich behoben. (Windows 10) Am Ende habe ich die Anwendung "bad" IIS gelöscht und eine identische mit demselben Namen erstellt.

0
pmb5