我有OwinStartup配置代码完美地工作,然后它停止工作。不幸的是,我不确定我到底做了什么来让它停止工作,我有一个非常困难的时间来弄清楚。

为了确保我掌握了基本知识,我反复检查以确保我掌握了

[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 . owen . security NuGet包升级到2.0.2,所以我尝试将它们恢复到2.0.1(这很痛苦),但它没有改变任何东西。我在项目上安装了WebActivator,并使用它来引导其他东西,但我已经在一个新的WebApplication模板上进行了测试,它在那里工作,所以我不认为这是罪魁祸首。

我还尝试删除我的启动类,并使用Visual Studio在添加新项目中使用OWIN启动类类型添加一个新的,并且也没有被调用。接下来,我尝试添加第二个Startup类,因为我知道如果定义了多个OwinStartup属性,它将抛出异常,但它没有抛出任何异常。

不知道还能试什么。任何想法吗?

更新

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


当前回答

当我将Owin添加到现有的web项目时,我也遇到了同样的问题。我最终发现问题是由于以下在网络。配置文件。

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

   ...

</assemblies>

删除程序集="*"导致了问题。当我删除这一行,Owin启动代码运行。 我最终把它改为下面的,它工作得很完美

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

其他回答

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

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

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

系统调用失败。(异常来自HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))

在我的例子中,这个microsoft . owen . host . systemweb包出现在项目中。

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

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

添加它们后,它工作顺利。

在我的例子中,IIS应用程序池没有设置为v4。它是v2。

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

原来讨论的问题的另一种答案——Owin“不解雇”。在我的情况下,我花了几个小时认为它没有发射,因为无法设置断点。

在visual studio中调试OWIN启动时

IIS Express -运行“F5”将在OWIN启动代码上中断 IIS -运行“F5”将不会中断,直到OWIN(和global.asax)代码加载之后。如果您连接到W3P.exe,您将能够进入它。

我有一个类似的问题,这和清算临时ASP。NET Files修复了它。希望这能帮助到一些人。