我有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的引用,当我使用它删除未使用的引用时。


当前回答

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

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

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

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

其他回答

如果您在调试Startup类中的代码时遇到了麻烦,那么我也遇到了这个问题——或者我认为我遇到了这个问题。代码正在触发,但我相信它发生在调试器附加之前,所以你不能在代码上设置断点,看看发生了什么。

您可以通过在Startup类的Configuration方法中抛出异常来证明这一点。

我认为上面有些人试图得到的是,如果你想通过编程让你的OWIN服务器“活起来”,你会调用这样的东西:

using Microsoft.Owin.Hosting;

    IDisposable _server = WebApp.Start<StartupMethod>("http://+:5000"); 
              // Start Accepting HTTP via all interfaces on port 5000

执行此调用后,您将看到调试器中启动了对StartupMethod()的调用

如果您从旧的MVC版本升级,请确保您没有

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

在你的web.config中。它将抑制调用启动逻辑。

相反,把它改成true

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

我知道你已经提到了这一点,但有时人们(比如我)不会阅读整个问题,而是直接跳到答案……

当我升级到MVC 5的时候,添加了这个,直到今天我才看到它。

这招对我很管用:

add authentication mode="None"

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
      <authentication mode="None" /><!--Use OWIN-->
  </system.web>

在这篇文章中,我把很多建议都搞砸了。

我有以下,但仍然不能降落在断点。抛出异常证明正在输入代码。

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

最后出于绝望,我看了project->属性,然后在WEB部分下,我还检查了NATIVE CODE复选框(ASP。NET应该已经检查过了)。

这终于帮我解决了问题。

注意:我使用的是Visual Studio 2017 Professional。