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


当前回答

调试技巧

如果调试不起作用,请尝试使用IIS Express或尝试下面的本地IIS方法

使用本地IIS

由于某些原因,此方法可以调试此方法:

申请网页 附加到w3wp.exe进程 触摸网络。配置文件 申请网页

额外的小费

也许这样做会刷新缓存:

在网络上。将optimizeCompilations属性添加为false值 <编译调试="true"…optimizeCompilations = " false " > 运行网站 撤消web.config中的更改

其他回答

在我的情况下,我的网站的输出路径被人改变了,IIS Express甚至没有加载OWIN,安装类当然不会被击中。在我将输出路径设置为“bin\”之后,它工作得很好。

在将类库转换为Web应用程序项目后,我遇到了这个问题,并变得固执起来。结果,在我的.csProj文件中,我有这样的:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>

因此,将各种dll构建到bin文件夹的子文件夹中(ifc。不会工作)。解决方案是将OutputPath的文本内容都更改为bin\。

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

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

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

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

确保在项目中安装了microsoft . owen . host . systemweb包。此包用于IIS托管应用程序的启动检测。有关更多信息,您可以参考这篇文章。

如果您在IIS主机上看到这个问题,但在F5调试时没有,请尝试在IIS中创建一个新应用程序。

这为我解决了问题。(windows 10)最后我删除了“坏”的IIS应用程序,并重新创建了一个同名的相同的应用程序。