Classe de inicialização OWIN ausente

226

Estou recebendo esse erro, pois meu projeto não consegue encontrar a referência para a OWINclasse de inicialização. Até instalei todos os pacotes de referência do OWIN por meio do Nuget ainda com o mesmo problema. Eu estou usando Visual Studio 2012e MVC4.

Os seguintes erros ocorreram ao tentar carregar o aplicativo.

  • Nenhum assembly encontrado contendo um OwinStartupAttribute.
  • Nenhum assembly encontrado contendo uma classe Startup ou [AssemblyName] .Startup. Para desativar a descoberta de inicialização do OWIN, adicione appSetting owin: AutomaticAppStartup com o valor "false" no seu web.config. Para especificar a montagem, classe ou método de inicialização do OWIN, adicione appSetting owin: AppStartup com a classe de inicialização totalmente qualificada ou o nome do método de configuração em seu web.config.
Krunal Patil
fonte
7
Você tem um Startup.csno projeto?
19413 christiandev
4
Sua montagem contém um OwinStartupAttribute? Será que o seu conjunto um Startupou [AssemblyName].Startupclasse? Você desabilitou a descoberta de inicialização do OWIN, adicionando o appSetting owin:AutomaticAppStartupcom o valor "false" no seu web.config? Você já fez uma dessas coisas e está se perguntando por que não está funcionando? Qual a sua pergunta?
ta.speot.is
1
Essa e a coisa. Não está mostrando a classe de inicialização OWIN quando tento adicionar um novo item no meu projeto. Eu procurei no google que diz adicionar referências OWIN através de pepitas e fiz o mesmo. Ainda não está conseguindo adicionar a classe.
precisa

Respostas:

213

Criar uma classe com inicialização de nome isso ajudará você ..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
biscoito
fonte
116
Além disso, se sua classe inicial não é de alguma forma no seu espaço de nome padrão, adicione uma linha de configuração web para a <appSettings>área, como:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray
7
Nowaday, há 3 maneiras de configurar Owin: asp.net/aspnet/overview/owin-and-katana/...
Jaider
22
Além do comentário de @ andrew-gray, colocar [assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]em AssemblyInfo.cstambém funcionaria.
Achilles
14
você também precisa pacote Microsoft.Owin.Host.SystemWeb outro modo de inicialização não é chamado
rjlopes
7
Também poderíamos adicionar esta linha imediatamente antes do namespace da classe Startup: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen
194

Em nosso projeto, como não precisamos da funcionalidade OWIN, removemos todas as referências owin do projeto de modelo inicial do ASP.NET MVC. O problema ocorreu após a remoção da classe de inicialização OWIN.

O problema foi o dll owin extra na minha pasta bin. Quando os apaguei, o problema foi resolvido. Você deve excluí-los excluindo a pasta bin. Solução Limpa não exclui essas DLLs.

De alguma forma, o IIS ainda executa as DLLs do OWIN quando estão na pasta bin.

Hüseyin Yağlı
fonte
6
Eu também tive esse problema e também tive que garantir que as referências não fizessem referência a nenhuma DLL do OWIN.
hacker de
2
Mesmo problema e mesma solução. No entanto, no meu caso, eu tinha um ramo de código com o Signalr e outro sem. Ao trocar de ramificação, as DLLs do Signalr permaneceram mesmo após uma limpeza. Eu precisava excluí-los manualmente.
precisa saber é o seguinte
3
Apenas uma observação para dizer isso significa literalmente que a pasta bin não está apenas usando a "Solução Limpa" do Visual Studio, que no meu caso estava excluindo a maioria das DLLs, mas não todas.
27715 Alan Macdonald
1
Algo que funcionou para mim, após excluir as referências OWIN e ainda não funcionar corretamente, foi adicionado <add key="owin:AutomaticAppStartup" value="false"/>como um appSetting. Apenas alguns conselhos para as pessoas que tentam isso e ainda não obtiveram sucesso.
LatentDenis
1
Para as pessoas para quem isso não funcionou, verifique se, mesmo depois de excluir as pastas bin, você entra nas referências do projeto e remove as referências às DLLs do Owin. No meu caso, excluí as pastas bin, mas esqueci que ainda tinha as referências (não utilizadas) no arquivo .csproj.
precisa saber é
104

No Visual Studio 2013 RC2, há um modelo para isso. Basta adicioná-lo à pasta App_Start.

insira a descrição da imagem aqui

O modelo produz essa 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
        }
    }
}
Timuçin
fonte
3
VS2015 precisava deste bem
Tom Stickel
2
Foi o que fiz para mim - criei o arquivo Startup.cs e o preenchi corretamente, mas perdi que ele precisava estar na pasta App_Start. Funcionou bem na minha máquina de desenvolvimento, mas uma vez publicado estava com erro. Obrigado!
Jon Peterson
Lembre-se de adicionar app.MapSignalR (); em Configuração (IAppBuilder app), outra 404 é retornado ao chamar [SeuSite] / signalr
Kasper Jensen halvas
45

Se você não deseja usar a inicialização do OWIN, é isso que você deve adicionar ao seu arquivo web.config :

Em AppSettings, adicione a seguinte linha:

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

É assim que deve aparecer no seu web.config:

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Yonatan Ayalon
fonte
1
Esta é realmente uma das respostas completas. Se você não está muito em configurações web.config, é difícil figura que você deve adicionar uma chave e um valor no arquivo xml
makoshichi
25

Dê uma olhada no Startup.csarquivo, pode estar faltando um deles. Este arquivo é o ponto de entrada do OWIN, portanto parece que está faltando. Dê uma olhada OWIN Startup classaqui para entender o que está acontecendo.

Como seu erro especifica, você pode desativá-lo no web.config, fazendo o seguinte ...

Para desativar a descoberta de inicialização do OWIN, adicione appSetting owin: AutomaticAppStartup com o valor "false" no seu web.config

christiandev
fonte
5
Eu adicionei <add key="owin:AutomaticAppStartup" value="false" />ao <appSettings>grupo e o Startup.cs não era mais necessário.
Webworm
@webworm, eu mencionei isso acima.
christiandev
2
@christiandev o que exatamente fará <add key="owin:AutomaticAppStartup" value="false" />? Desabilitará alguma funcionalidade? Precisamos iniciar o aplicativo posteriormente para poder usar qualquer funcionalidade OWIN?
Flo
18

Primeiro, você deve criar seu arquivo de inicialização e depois especificar o código do idioma no arquivo web.config, dentro da tag appSettings com esta linha:

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

Isso resolveu meu problema.

Slaters
fonte
11

Eu tive esse problema, entenda que não é o que estava errado no caso do OP, mas no meu caso eu tinha uma classe Startup, simplesmente não a encontrava por padrão.

Meu problema era que eu tinha espaços no meu Nome do Assembly e, portanto, o espaço para nome padrão era diferente do nome do assembly; portanto, o espaço para nome da classe de inicialização era diferente do nome do assembly.

Como o erro sugere, por convenção, ele procura [Assembly Name] .Iniciar a classe ... portanto, verifique se o espaço para nome da sua classe Startup é o mesmo que o nome do Assembly. Corrigido o problema para mim.

TCC
fonte
1
Eu tive um problema parecido. Meu nome de projeto tinha um hífen '-', que foi convertido em sublinhado pelo VS, portanto, o namespace e a classe de inicialização eram essencialmente diferentes.
LDJ
7

Tentei a maioria das correções recomendadas aqui e ainda não pude evitar a mensagem de erro. Finalmente, realizei uma combinação de algumas soluções recomendadas:

  1. Adicionada esta entrada na parte superior da AppSettingsseção do meu web.config :

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

  2. Expandiu o nó Referências do meu projeto e excluiu tudo o que continha a sequência OWIN. (Eu me senti seguro fazendo isso, já que minha organização não é (e não será) um provedor ativo de OWIN no futuro)

Cliquei Rune minha página inicial foi carregada.

Jason Marsell
fonte
4

No meu caso, renomeei o projeto e alterei sua estrutura de pastas. Descobri que atualizar o RootNameSpace e AssemblyName no arquivo .csproj em que o erro estava sendo lançado resolveu o erro. Se você modificou os caminhos do seu projeto, eu recomendo verificar isso também.

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Unlearnd
fonte
Parabéns a você, mano, você ficou preso como uma eternidade e não encontrou solução até que eu li isso, o AssemblyName não foi atualizado depois que eu o mudei manualmente. Agora funciona! Muito obrigado!
Mason
3

O meu caso? Eu tinha um arquivo de inicialização, mas ele foi excluído no projeto. Acabei de incluí-lo e o erro foi deixado.

Gellie Ann
fonte
3

Isso também pode ser enfrentado no Visual Studio 2015 quando você usa o Azure AD com um projeto MVC. Aqui, ele cria o arquivo de inicialização como Startup.Auth.cs na pasta App_Start, mas estará faltando o

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

Então adicione-o e você deve estar pronto. Isso ocorre antes do início do namespace.

Diceyus
fonte
2

Também é possível obter essa exceção (mesmo quando você tem uma classe de inicialização configurada corretamente) se estiver executando o IIS Express e seu diretório virtual não estiver configurado corretamente.

Quando encontrei esse problema, a resolução era simplesmente pressionar o botão 'Criar diretório virtual' na guia 'Web' das propriedades do projeto (usando o Visual Studio 2013)

mcarter
fonte
2

Você está realmente tentando adicionar OWIN ao seu projeto ou isso é algo inesperado?

  1. Caso você queira adicionar OWIN, adicionar uma classe de inicialização é o caminho a percorrer.

  2. Caso você não precise de nenhuma referência a Owin :

    excluir Owin.dll da sua pasta / bin .

    Owin.dll é quem está tentando identificar a classe Startup.

despuestambien
fonte
1

Embora eu não possa explicar completamente por que isso resolveu o problema para mim, eu me deparei com um problema como este depois de alterar meu projeto de API para criar para separar \debuge \releasepastas. Uma vez reverti essa alteração novamente para criar em uma única \binpasta, as coisas começaram a funcionar.

Eu escrevi minha experiência aqui: Não é possível obter a classe de inicialização OWIN para executar no IIS Express após renomear o arquivo de projeto do ASP.NET

Sam Storie
fonte
1

Eu me deparei com esse problema depois de experimentar o SignalR e removê-lo do projeto. Para resolver, tive que excluir o conteúdo da pasta bin do site no servidor remoto e depois publicar novamente.

Owen Pauling
fonte
1

Basta verificar se o seu packages.configarquivo está registrado (quando excluído, haverá um símbolo vermelho de não entrada mostrado no explorer). Por algum motivo bizarro, o meu foi excluído e causou esse problema.

Ian
fonte
0

Continuei recebendo o mesmo erro quando iniciei meu projeto usando o Painel de Link do Navegador no VS2013. Mas, quando eu executei meu projeto no modo de depuração, ele funcionaria. Não consegui descobrir por que e como fazer o Painel do Link do Navegador funcionar. Eu verifiquei o arquivo de inicialização, tudo bem, adicionei a linha appSetting conforme descrito em algumas das respostas "", mas nada funcionou.

Aparentemente, o que eu estava fazendo de errado foi clicar no link ERRADO no painel do navegador. Todos os links de projetos de soluções são exibidos no Painel do navegador, mas apenas o link de projetos de inicialização funciona. Você precisa clicar no link do projeto de inicialização.

Exemplo: tenho dois projetos, ambos exibidos no Painel do navegador, mas apenas o marcado como o projeto de inicialização funcionará (mostrado em negrito no Solution Explorer.) Pensei que isso poderia ajudar alguém a fazer o óbvio, me custou 2 dias para tropeçar no óbvio.

alikuli
fonte
0

Eu tive esse problema quando obtive a versão mais recente do TFS enquanto outros projetos estavam abertos em várias instâncias do VS. Eu já tenho todas as correções acima. A reabertura do VS corrigiu o problema.

PersyJack
fonte
0

No meu caso, entrei no servidor ftp. Fez backup dos arquivos atuais no servidor ftp. Exclua todos os arquivos manualmente do servidor ftp. Solução limpa, reimplementou o código. Funcionou.

Kurkula
fonte