Eu tinha o código de configuração OwinStartup funcionando perfeitamente e então ele parou de funcionar. Infelizmente, não sei exatamente o que fiz para fazê-lo parar de funcionar e estou tendo muita dificuldade para descobrir isso.
Para garantir que eu tenha o básico coberto, dobrei a verificação para ter certeza de que tenho o
[assembly:OwinStartup(typeof(WebApplication.Startup))]
atributo atribuído corretamente e certificou-se de que eu não tenho um appSetting para owin: AutomaticAppStartup que esteja definido como false, por isso fiz um conjunto como true para ser seguro, pois não havia nada antes.
<add key="owin:AutomaticAppStartup" value="true" />
Também tentei chamar especificamente o appSetting:
<add key="owin:appStartup" value="WebApplication.Startup" />
Antes que parasse de funcionar, atualizei os pacotes Microsoft.Owin.Security NuGet para a 2.0.2, então tentei revertê-los para a 2.0.1 (isso foi um problema), mas não mudou nada. Eu tenho o WebActivator instalado no projeto e estou usando isso para inicializar outras coisas, mas eu testei isso em um modelo WebApplication novo e ele funciona lá, então não acho que seja o culpado.
Também tentei remover minha classe de inicialização e usar o Visual Studio para adicionar uma nova usando o tipo de classe de inicialização OWIN em Adicionar novo item e isso também não está sendo chamado. Em seguida, tentei adicionar uma segunda classe de inicialização, pois sei que ela lançará uma exceção se houver mais de um atributo OwinStartup definido, mas ela não está lançando nenhuma exceção.
Não tenho certeza o que mais tentar. Alguma ideia?
Atualizar
Acontece que o Resharper removeu a referência ao Microsoft.Owin.Host.SystemWeb quando o usei para remover referências não utilizadas.
fonte
Respostas:
Verifique se você instalou o
Microsoft.Owin.Host.SystemWeb
pacote no projeto. Este pacote é necessário para a detecção de inicialização em aplicativos hospedados no IIS. Para mais informações, você pode consultar este artigo .fonte
Startup.Configuration(IAppBuilder)
?Se você atualizou de uma versão mais antiga do MVC, verifique se não possui
no seu
web.config
. Ele suprimirá a chamada da lógica de inicialização.Em vez disso, altere-o para
true
Sei que você já mencionou isso, mas às vezes as pessoas (como eu) não leem a pergunta toda e apenas pulam para as respostas ...
Em algum lugar ao longo da linha - quando eu atualizei para o MVC 5, isso foi adicionado e eu nunca o vi até hoje.
fonte
Resposta alternativa ao problema original discutido - Owin "não está disparando". No meu caso, passei horas pensando que não estava disparando devido à impossibilidade de definir um ponto de interrupção nele.
Ao depurar a inicialização do OWIN no visual studio
IIS Express - A execução de "F5" será interrompida no código de inicialização do OWIN
IIS - A execução de "F5" não será interrompida até que o código OWIN (e global.asax) seja carregado. Se você se conectar ao W3P.exe, poderá entrar nele.
fonte
Se você está tendo problemas para depurar o código na
Startup
classe, eu também tive esse problema - ou pensei que sim. O código estava disparando, mas acredito que isso acontece antes que o depurador seja anexado, portanto você não pode definir pontos de interrupção no código e ver o que está acontecendo.Você pode provar isso lançando uma exceção no
Configuration
método daStartup
classe.fonte
DEBUGGING SUGESTÕES
Se a depuração não funcionar, tente usar o IIS Express ou tente o método abaixo para o IIS local
Usando o IIS local
Por alguma razão, este método permite a depuração deste método:
Dica extra
Talvez fazer isso libere um cache:
No web.config, adicione o atributo optimizeCompilations com um valor falso
<compilação debug = "true" ... optimizeCompilations = "false">
Executar site
fonte
optimizeCompilations="false"
funciona para mimEu tive um problema semelhante a isso e a limpeza de arquivos ASP.NET temporários o corrigiu. Espero que isso ajude alguém.
fonte
Temporary ASP.NET Files
conteúdo da pasta, a inicialização do Owin foi chamada.Eu tive o mesmo problema. O pacote Microsoft.Owin.Host.SystemWeb foi instalado, mas durante a instalação o NuGet não conseguiu adicionar a dll como referência por algum motivo. Verifique se o seu projeto tem essa referência. Caso contrário, você pode tentar reinstalar:
Eu tive um erro como abaixo na reinstalação, mas de alguma forma funcionou:
fonte
No meu caso, o pool de aplicativos IIS não foi definido como v4. Foi v2.
Mudou o AppPool para a v4 e tudo estava bem.
fonte
Eu tive o mesmo problema quando adicionei Owin a um projeto da web existente. Acabei encontrando o problema devido ao seguinte no arquivo web.config.
O assembly de remoção = "*" estava causando o problema. Quando removo esta linha, o código de inicialização do Owin foi executado. Eu finalmente mudei para o seguinte e funcionou perfeitamente
fonte
No meu caso, o caminho de saída do meu site é alterado por alguém, o IIS Express ainda não carrega OWIN, e a classe de instalação não será atingida, é claro. Depois de definir o caminho de saída como "bin \", ele funciona bem.
fonte
No meu caso, este pacote Microsoft.Owin.Host.SystemWeb está presente no projeto.
Mas abaixo de duas tags não estão presentes no web.config.
depois de adicioná-los, ele funciona sem problemas.
fonte
No meu caso, meu web.config tinha
Para forçá-lo a voltar para Owin, eu precisava que fosse
fonte
Eu brinquei com muitas sugestões neste post.
Eu tinha o seguinte, mas ainda não consegui parar em um ponto de interrupção. Lançar uma exceção provou que o código estava sendo inserido.
Finalmente, por desespero, olhei para as propriedades project-> e, na seção WEB, marquei também a caixa de seleção NATIVE CODE (o ASP.NET já deveria estar marcado).
Isso finalmente resolveu para mim.
Nota: estou usando o Visual Studio 2017 Professional.
fonte
Não tenho certeza se isso ainda ajudará alguém, mas já fiz todas as soluções acima (e de algumas outras postagens) sem sucesso.
O que corrigiu o problema do meu lado foi colocar uma barra invertida no final do valor RedirectUri no web.config (louco, eu sei!). RedirectUri é um parâmetro em UseOpenIdConnectAuthentication.
Então, em vez de:
Faça isso:
E atualizou o URL de resposta nas configurações de aplicativos do Azure também.
Isso fez com que a Inicialização fosse executada conforme o esperado (provavelmente limpou algum cache) e os pontos de interrupção estão sendo disparados.
PARA SUA INFORMAÇÃO. Eu estava modelando meu código a partir daqui: https://github.com/microsoftgraph/aspnet-connect-sample
fonte
Depois de converter uma biblioteca de classes em um projeto de aplicativo da Web , deparei-me com isso e me tornei teimosa. No meu
.csProj
arquivo, eu tinha o seguinte:OutputPath
para apenasbin\
.fonte
Para mim, foi porque eles não estão no mesmo espaço para nome. Depois de remover meu AppStart de "project.Startup.AppStart" e permitir que ambos Startup.cs e Startup.Auth.cs com o namespace "project.Startup", tudo voltou ao seu funcionamento perfeito.
Espero que ajude!
fonte
Se você estiver enfrentando esse problema com a hospedagem do IIS, mas não com a depuração F5, tente criar um novo aplicativo no IIS.
Isso consertou para mim. (windows 10) No final, excluí o aplicativo IIS "ruim" e recriei um idêntico com o mesmo nome.
fonte
Eu acho que o que algumas pessoas estavam tentando entender acima é que, se você quiser fazer com que seu servidor OWIN "ganhe vida" programaticamente, você chamaria algo assim:
Depois de fazer essa chamada, você verá a chamada para StartupMethod () disparar no depurador
fonte
Achei o seguinte artigo muito útil:
https://weblog.west-wind.com/posts/2015/Apr/29/Adding-minimal-OWIN-Identity-Authentication-to-an-Existing-ASPNET-MVC-Application#MinimalCodeSummary
No meu caso, eu tive que definir o seguinte antes que a autenticação Owin funcionasse, em vez da autenticação do Windows:
fonte
Isso funcionou para mim:
fonte
Primeiro adicione a classe de autenticação OWIN e ative OWIN: AutomaticAppStartup chave no seu web.config, como Agora vai disparar
fonte