OwinStartup没有射击

我有OwinStartupconfiguration代码工作完美,然后停止工作。 不幸的是,我不确定我做了什么来使它停止工作,并且正在很难找出答案。

为了确保我已经涵盖了基本知识,我检查了一下,以确保我有

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

属性分配正确,并确保我没有一个appSetting为owin:AutomaticAppStartup设置为false,所以我做了一个设置为true是安全的,因为之前没有任何东西。

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

我也试过专门调用appSetting:

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

在停止工作之前,我将Microsoft.Owin.Security NuGet包升级到了2.0.2,所以我试着将它们恢复到2.0.1(这是一个痛苦),但是它没有改变任何东西。 我在该项目上安装了WebActivator,并使用它来引导其他的东西,但我已经在新的WebApplication模板上进行了testing,并且在那里工作,所以我不认为这是罪魁祸首。

我也尝试删除我的启动类,并使用Visual Studio添加一个新的使用添加新项目中的OWIN启动类types,并没有得到调用。 接下来我尝试添加第二个Startup类,因为我知道如果定义了多个OwinStartup属性,它会抛出一个exception,但是不会抛出任何exception。

不知道还有什么要尝试。 有什么想法吗?

更新

原来,当我用它删除未使用的引用时,Resharper删除了对Microsoft.Owin.Host.SystemWeb的引用。

确保在项目中安装了Microsoft.Owin.Host.SystemWeb软件包。 在IIS托pipe应用程序中启动检测需要此包。 欲了解更多信息,你可以参考这篇文章。

讨论的原始问题的替代答案 – Owin“不开火”。 在我的情况下,我花了几个小时,认为它没有被解雇,因为无法设置断点。

在Visual Studio中debuggingOWIN启动时

  • IIS Express – 运行“F5”将破坏OWIN启动代码

  • IIS – 运行“F5” 不会中断,直到加载OWIN(和global.asax)代码。 如果你附加到W3P.exe,你将能够进入它。

我意识到你已经提到了这一点,但这是一个重要的事情来检查,有时候人们(像我一样)没有阅读整个问题,只是跳到答案…“对于从旧MVC版本升级的人 – 确保你没有

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

在你的web.config ,你甚至不知道。 它会压制调用启动

而是将其更改为true

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

某处沿线 – 当我升级到MVC 5时,这个增加了(实际上几乎是讽刺的是明天是一年前),直到今天,当我尝试使用它时,我甚至不知道owin是什么。

如果您在Startup类中debugging代码时遇到了问题,我也遇到了这个问题 – 或者我认为是。 代码被解雇了,但是我相信这是在debugging器连接之前发生的,所以你不能在代码上设置断点,看看发生了什么。

您可以通过在Startup类的Configuration方法中抛出一个exception来certificate这一点。

我有一个类似的问题,并清除临时ASP.NET文件修复它。 希望这有助于某人。

我有同样的问题。 Microsoft.Owin.Host.SystemWeb软件包已安装,但在安装过程中,由于某种原因,NuGet无法添加dll作为参考。 确保你的项目有这个参考。 如果没有,你可以尝试重新安装:

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

我有一个像下面的错误重新安装,但不知何故它的工作:

系统调用失败。 (从HRESULTexception:0x80010100(RPC_E_SYS_CALL_FAILED))

debugging技巧

如果debugging不起作用,请尝试使用IIS Express,或者尝试下面的方法来访问本地IIS

使用本地IIS

出于某种原因,此方法可以debugging此方法:

  1. 请求一个网页
  2. 附加到w3wp.exe进程
  3. 触摸web.config文件
  4. 请求一个网页

额外的提示

也许这样做会刷新caching:

  1. 在web.config中添加一个false值的optimizeCompilations属性

    <compilation debug =“true”… optimizeCompilations =“false”>

  2. 运行网站

  3. 撤消web.config中的更改

在我的情况下,IIS应用程序池没有设置为v4。 这是V2。

将AppPool更改为v4,一切正常。

在我的情况下,我的网站的输出path被某人改变,IIS Express甚至不加载OWIN,并且安装类当然不会被击中。 将输出path设置为“bin”后,效果很好。

当我将Owin添加到现有的Web项目时,我遇到了同样的问题。 我最终发现问题是由于web.config文件中的以下内容。

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

删除汇编=“*”是造成这个问题。 当我删除这条线,欧文的启动代码运行。 我最终将其更改为以下,并完美运作

 <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> 

我在这篇文章中混淆了很多的build议。

我有以下,但仍不能在一个断点着陆。 抛出exceptioncertificate代码正在input。

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

最后出于绝望,我看着project-> properties,然后在WEB部分我也检查了NATIVE CODEcheckbox(ASP.NET应该已经被选中)。

终于为我修好了

注意:我正在使用Visual Studio 2017 Professional。

在我的情况下,这个Microsoft.Owin.Host.SystemWeb软件包出现在项目中。

但是web.config中不存在两个标签。

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

添加后它工作顺利。

首先添加OWINauthentication类,然后在您的web.config中启用OWIN:AutomaticAppStartup 现在它会开火