OWIN Classe di avvio mancante


226

Ricevo questo errore poiché il mio progetto non è in grado di trovare il riferimento per la OWINclasse di avvio. Ho anche installato tutti i pacchetti di riferimento OWIN tramite Nuget ottenendo ancora lo stesso problema. Sto usando Visual Studio 2012e MVC4.

Si sono verificati i seguenti errori durante il tentativo di caricare l'app.

  • Nessun assembly trovato contenente un OwinStartupAttribute.
  • Nessun assembly trovato contenente una classe Startup o [AssemblyName] .Startup. Per disabilitare il rilevamento all'avvio di OWIN, aggiungi l'app owin Impostazione automatica: AutomaticAppStartup con un valore "false" nel tuo web.config. Per specificare l'assembly, la classe o il metodo di avvio OWIN, aggiungere l'appSetting owin: AppStartup con la classe di avvio o il nome del metodo di configurazione completo nel proprio web.config.

7
Hai un Startup.csnel progetto?
christiandev,

4
Il tuo assembly contiene un OwinStartupAttribute? Il vostro un'assemblea Startupo di [AssemblyName].Startupclasse? Hai disabilitato il rilevamento all'avvio di OWIN, aggiungendo l'appSetting owin:AutomaticAppStartupcon un valore "false" nel tuo web.config? Hai fatto una di queste cose e ti stai chiedendo perché non funziona? Qual è la tua domanda?
ta.speot.è il

1
Questa è la cosa. Non mostra la classe di avvio OWIN quando provo ad aggiungere un nuovo oggetto nel mio progetto. Ho cercato su Google, dice aggiungere riferimenti OWIN attraverso i nuget e ho fatto lo stesso. Non riesco ancora ad aggiungere la classe.
Krunal Patil,

Risposte:


213

Crea una classe con nome Startup questo ti aiuterà ..

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

116
Inoltre, se la tua classe di avvio non è in qualche modo nello spazio dei nomi predefinito, aggiungi una riga di configurazione Web <appSettings>nell'area come:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray,

7
Al giorno d'oggi, ci sono 3 modi per configurare owin: asp.net/aspnet/overview/owin-and-katana/…
Jaider

22
Oltre al commento di @ andrew-gray, anche la messa [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]in AssemblyInfo.csopera avrebbe funzionato.
Achille,

14
è necessario anche il pacchetto Microsoft.Owin.Host.SystemWeb, altrimenti l'avvio non viene chiamato
rjlopes

7
Potremmo anche aggiungere questa riga appena prima dello spazio dei nomi della classe Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen,

194

Nel nostro progetto, non avevamo bisogno della funzionalità OWIN, quindi abbiamo rimosso tutti i riferimenti owin dal progetto modello ASP.NET MVC iniziale. Il problema si è verificato dopo aver rimosso la classe di avvio OWIN.

Il problema era la dll di owin extra nella mia cartella bin. Quando li ho cancellati, il problema è stato risolto. Dovresti eliminarli eliminando la cartella bin. Clean Solution non elimina queste dll.

In qualche modo, IIS esegue ancora le DLL OWIN quando si trovano nella cartella bin.


6
Anch'io avevo questo problema e dovevo assicurarmi che i riferimenti non facessero riferimento a nessuna DLL OWIN.
hacker,

2
Stesso problema e stessa soluzione. Tuttavia nel mio caso avevo un ramo di codice con Signalr e uno senza. Quando si cambia ramo, le DLL Signalr sono rimaste anche dopo una pulizia. Ho dovuto eliminarli manualmente.
Kywillis,

3
Solo una nota per dire questo significa letteralmente che la cartella bin non utilizza solo "Clean Solution" di Visual Studio che nel mio caso stava eliminando la maggior parte delle DLL ma non tutte.
Alan Macdonald,

1
Qualcosa che ha funzionato per me, è dopo aver eliminato i riferimenti OWIN e ancora non funzionava correttamente si stava aggiungendo <add key="owin:AutomaticAppStartup" value="false"/>come impostazione di app . Solo qualche consiglio per le persone che provano questo e ancora non ci riesce.
LatentDenis,

1
Per le persone per le quali questo non ha funzionato, assicurati che anche dopo aver eliminato le cartelle bin che vai nei riferimenti del progetto e rimuovi i riferimenti alle Oll dll. Nel mio caso ho eliminato le cartelle bin ma ho dimenticato di avere ancora i riferimenti (non utilizzati) nel file .csproj.
Akousmata,

104

Su Visual Studio 2013 RC2, esiste un modello per questo. Basta aggiungerlo alla cartella App_Start.

inserisci qui la descrizione dell'immagine

Il modello produce una tale classe:

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
Anche VS2015 ne aveva bisogno
Tom Stickel,

2
Lo ha fatto per me: ho creato il file Startup.cs e l'ho popolato correttamente, ma ho perso che doveva trovarsi nella cartella App_Start. Ho funzionato bene sulla mia macchina di sviluppo, ma una volta pubblicato stava sbagliando. Grazie!
Jon Peterson,

Ricorda di aggiungere app.MapSignalR (); in Configuration (app IAppBuilder), altrimenti viene restituito 404 quando si chiama [YourSite] / signalr
Kasper Halvas Jensen,

45

Se non si desidera utilizzare l'avvio OWIN, questo è ciò che è necessario aggiungere al file web.config :

In AppSettings aggiungi la seguente riga:

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

Ecco come dovrebbe apparire nel tuo web.config:

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

1
Questa è in realtà una delle risposte complete. Se non ti piacciono molto le impostazioni di web.config, è difficile capire che dovresti aggiungere una chiave e un valore nel file xml
makoshichi,

25

Dai un'occhiata al Startup.csfile, potresti perdere uno di questi. Questo file è il punto di ingresso per OWIN, quindi sembra che manchi questo. Dai un'occhiata OWIN Startup classqui per capire cosa sta succedendo.

Come specificato dal tuo errore, puoi disabilitarlo in web.config procedendo come segue ...

Per disabilitare il rilevamento dell'avvio di OWIN, aggiungi l'app owin Impostazione automatica: AutomaticAppStartup con un valore "false" nel tuo web.config


5
Ho aggiunto <add key="owin:AutomaticAppStartup" value="false" />al <appSettings>gruppo e Startup.cs non era più necessario.
webworm,

@webworm, lo menziono sopra.
christiandev,

2
@christiandev cosa farà esattamente <add key="owin:AutomaticAppStartup" value="false" />? Disabiliterà qualche funzionalità? Dobbiamo avviare l'app in un secondo momento per poter utilizzare qualsiasi funzionalità OWIN?
Flo

18

Per prima cosa devi creare il tuo file di avvio e dopo aver specificato le impostazioni internazionali di questo file in web.config, all'interno del tag appSettings con questa riga:

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

Ha risolto il mio problema.


11

Ho avuto questo problema, capisco che non era quello che non andava nel caso dell'OP, ma nel mio caso avevo una classe Startup, non lo trovavo per impostazione predefinita.

Il mio problema era che avevo spazi nel mio nome assembly, e quindi lo spazio dei nomi predefinito era diverso dal nome dell'assembly, quindi lo spazio dei nomi per la classe di avvio era diverso dal nome dell'assembly.

Come suggerisce l'errore, per convenzione cerca [Nome assembly]. Avvio per la classe ... quindi assicurati che lo spazio dei nomi per la tua classe Startup sia uguale al nome dell'Assemblea. Risolto il problema per me.


1
Ho avuto un problema simile. Il nome del mio progetto conteneva un trattino '-', che è stato convertito in trattino basso da VS, quindi lo spazio dei nomi e la classe di avvio erano sostanzialmente diversi.
LDJ,

7

Ho provato la maggior parte delle correzioni consigliate qui, e ancora non ho potuto evitare il messaggio di errore. Alla fine ho eseguito una combinazione di alcune soluzioni consigliate:

  1. Aggiunta questa voce all'inizio della AppSettingssezione del mio web.config :

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

  2. Espanso il nodo Riferimenti del mio progetto ed eliminato tutto ciò che conteneva la stringa OWIN. (Mi sentivo al sicuro nel farlo poiché la mia organizzazione non sarà (e non sarà) un fornitore OWIN attivo in futuro)

Ho quindi fatto clic Rune la mia homepage è stata caricata a destra.


4

Nel mio caso, avevo rinominato il progetto e modificato la struttura delle cartelle. Ho scoperto che l'aggiornamento di RootNameSpace e AssemblyName nel file .csproj in cui è stato generato l'errore ha risolto l'errore. Se hai modificato i percorsi del tuo progetto, ti consiglio di controllare anche questo.

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

Complimenti per la vacca sacra a te fratello, ti sono rimasto bloccato come per sempre e non ho trovato soluzione finché non ho letto questo, AssemblyName non è stato aggiornato dopo averlo cambiato manualmente. Ora funziona! Grazie mille!
Mason

3

Il mio caso? Ho avuto il file di avvio, ma è escluso nel progetto. L'ho appena incluso e l'errore è rimasto.


3

Questo potrebbe essere affrontato anche in Visual Studio 2015 quando si usa Azure AD con un progetto MVC. Qui crea il file di avvio come Startup.Auth.cs nella cartella App_Start ma mancherà il file

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

Quindi aggiungilo e dovresti essere a posto. Questo precede l'inizio dello spazio dei nomi.


2

È anche possibile ottenere questa eccezione (anche quando si dispone di una classe di avvio configurata correttamente) se si esegue IIS Express e la directory virtuale non è configurata correttamente.

Quando ho riscontrato questo problema, la risoluzione era semplicemente premere il pulsante "Crea directory virtuale" nella scheda "Web" delle proprietà del progetto (utilizzando Visual Studio 2013)


2

Stai davvero cercando di aggiungere OWIN al tuo progetto o è qualcosa di inaspettato?

  1. Nel caso in cui desideri aggiungere OWIN, l'aggiunta di una classe di avvio è la strada da percorrere.

  2. Nel caso in cui non sia necessario alcun riferimento a Owin :

    elimina Owin.dll dalla tua cartella / bin .

    Owin.dll è quello che tenta di identificare la classe di avvio.


1

Anche se non riesco a spiegare completamente il motivo per cui questo ha risolto il problema, ho riscontrato un problema come questo dopo aver modificato il mio progetto API per creare cartelle \debuge separare \release. Una volta ho ripristinato quella modifica per creare una singola \bincartella, le cose hanno iniziato a funzionare.

Ho scritto la mia esperienza qui: Impossibile ottenere la classe di avvio OWIN in IIS Express dopo aver rinominato il file di progetto ASP.NET


1

Ho riscontrato questo problema dopo aver sperimentato SignalR e averlo rimosso dal progetto. Per risolvere ho dovuto eliminare il contenuto della cartella bin per il sito sul server remoto e quindi pubblicare nuovamente.


1

Controlla solo che il tuo packages.configfile sia archiviato (se escluso, ci sarà un simbolo rosso senza accesso mostrato in Explorer). Per qualche strana ragione la mia è stata esclusa e ha causato questo problema.


0

Continuavo a ricevere lo stesso errore quando ho iniziato il mio progetto usando il Browser Link Dashboard in VS2013. Ma, quando ho eseguito il mio progetto in modalità debug, avrebbe funzionato. Non sono riuscito a capire perché e come far funzionare Browser Link Dashboard. Ho controllato il file di avvio, andava bene, ho aggiunto la riga AppSetting come descritto in alcune delle risposte "", ma non ha funzionato.

Apparentemente, ciò che stavo facendo di sbagliato era fare clic sul collegamento SBAGLIATO nel Browser Dashboard. Tutti i collegamenti dei progetti di soluzioni vengono visualizzati nel Browser Dashboard, ma funziona solo il collegamento dei progetti di avvio. Devi fare clic sul collegamento del progetto di avvio.

Esempio: ho 2 progetti, entrambi visualizzati nel Browser Dashboard, ma funzionerà solo quello contrassegnato come progetto di avvio (viene mostrato in grassetto in Esplora soluzioni.) Ho pensato che questo potesse aiutare qualcuno a fare l'ovvio, mi è costato 2 giorni per imbattersi nell'ovvio.


0

Ho avuto questo problema quando ho ricevuto le ultime novità su TFS mentre altri progetti erano aperti in più istanze di VS. Ho già tutte le correzioni sopra. La riapertura di VS ha risolto il problema.


0

Nel mio caso ho effettuato l'accesso al server ftp. Ha preso il backup dei file correnti sul server ftp. Elimina tutti i file manualmente dal server ftp. Soluzione pulita, ridistribuito il codice. Ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.