OWIN启动类丢失

时间:2013-11-19 09:44:36

标签: c# asp.net-mvc-4 visual-studio-2012 owin

我收到此错误,因为我的项目无法找到OWIN启动类的引用。我甚至通过Nuget安装了所有OWIN参考包仍然遇到了同样的问题。我正在使用Visual Studio 2012MVC4

尝试加载应用时发生以下错误。

  
      
  • 找不到包含OwinStartupAttribute的程序集。
  •   
  • 找不到包含Startup或[AssemblyName] .Startup类的程序集。要禁用OWIN启动发现,请添加appSetting   owin:您的web.config中值为“false”的AutomaticAppStartup。   要指定OWIN启动程序集,类或方法,请添加   appSetting owin:AppStartup与完全限定的启动类或   web.config中的配置方法名称。
  •   

19 个答案:

答案 0 :(得分:204)

使用名称启动创建一个类,这将帮助您..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}

答案 1 :(得分:193)

在我们的项目中,我们不需要OWIN功能,因此我们从初始的ASP.NET MVC模板项目中删除了所有owin引用。删除OWIN启动类后出现问题。

问题是我的bin文件夹中的额外owin dll。当我删除它们时,问题得到了解决。您应该删除bin文件夹来删除它们。 清洁解决方案 不会删除这些dll。

不知何故,当IIS位于bin文件夹中时,IIS仍会执行OWIN dll。

答案 2 :(得分:102)

在Visual Studio 2013 RC2上,有一个模板。只需将其添加到App_Start文件夹即可。

enter image description here

模板会产生这样一个类:

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(WebApiOsp.App_Start.Startup))]

namespace WebApiOsp.App_Start
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
        }
    }
}

答案 3 :(得分:43)

如果您不想使用OWIN启动,那么您应该添加到 web.config 文件中:

AppSettings 下添加以下行:

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

这是它在web.config中的样子:

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

答案 4 :(得分:25)

查看Startup.cs文件,您可能会遗漏其中一个。这个文件是OWIN的入口点,所以听起来好像缺少了。在这里看一下OWIN Startup class,了解最新情况。

正如您的错误指定的那样,您可以通过执行以下操作在web.config中禁用此功能...

  

要禁用OWIN启动发现,请添加appSetting   owin:您的web.config

中的值为“false”的AutomaticAppStartup

答案 5 :(得分:16)

首先你必须创建你的启动文件,然后你必须在web.config中指定这个文件的语言环境,在appSettings标签里面用这行:

<add key="owin:AppStartup" value="[NameSpace].Startup"/>

它解决了我的问题。

答案 6 :(得分:11)

我遇到了这个问题,明白这不是OP的情况,但在我的情况下,我确实有一个Startup类,它默认情况下没找到它。

我的问题是我的程序集名称中有空格,因此默认名称空间与程序集名称不同,因此启动类的名称空间与程序集名称不同。

正如错误所示,按照惯例,它会查找[程序集名称]。类的启动...所以请确保您的Startup类的名称空间与程序集名称相同。解决了我的问题。

答案 7 :(得分:7)

我在这里尝试了大多数推荐的修补程序,但仍然无法避免错误消息。我最终完成了一些推荐的解决方案的组合:

  1. 将此条目添加到 web.config AppSettings部分的顶部:

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

  2. 扩展了我项目的References节点,并删除了包含字符串OWIN的所有内容。 (我觉得这样做很安全,因为我的组织未来(并且不会成为)未来的活跃OWIN提供商)

  3. 然后我点击了Run并且我的主页已经加载了。

答案 8 :(得分:3)

在我的情况下,我重命名了项目并更改了它的文件夹结构。我发现更新抛出错误的.c​​sproj文件中的RootNameSpace和AssemblyName解决了错误。如果您修改了项目的路径,我建议您也检查一下。

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>

答案 9 :(得分:3)

当您将Azure AD与MVC项目一起使用时,Visual Studio 2015中也可能会遇到这种情况。在这里它创建启动文件作为App_Start文件夹中的Startup.Auth.cs但它将缺少

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

所以添加它,你应该好好去。这是在命名空间开始之前的。

答案 10 :(得分:3)

我的情况?我有启动文件,但它被排除在项目中。我只是把它包括在内,错误就剩下了。

答案 11 :(得分:2)

如果运行IIS Express并且未正确配置虚拟目录,也可能会出现此异常(即使您具有正确配置的启动类)。

当我遇到此问题时,解决方法只是按下“创建虚拟目录”&#39; &#39; Web&#39;中的按钮项目属性的选项卡(使用Visual Studio 2013)

答案 12 :(得分:1)

我在尝试使用SignalR然后将其从项目中删除后遇到了这个问题。要解决此问题,我必须删除远程服务器上站点的bin文件夹的内容,然后再次发布。

答案 13 :(得分:1)

虽然我无法完全解释为什么这为我解决了这个问题,但在我将API项目更改为单独的\debug\release文件夹后,我遇到了类似的问题。一旦我将该更改恢复为构建到单个\bin文件夹,就会开始工作。

我在这里写下了我的经历:Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file

答案 14 :(得分:1)

您是否真的尝试将OWIN添加到您的项目中,或者这是意料之中的事情?

  1. 如果您想添加OWIN,可以添加一个Startup类。

  2. 如果您不需要对 Owin 的任何引用:

    从/ bin文件夹中删除Owin.dll

    Owin.dll是尝试识别Startup类的人。

答案 15 :(得分:1)

只需检查您的packages.config文件是否已签入(排除时,资源管理器中会显示红色的禁止输入符号)。由于某些奇怪的原因,我被排除在外并造成了这个问题。

答案 16 :(得分:0)

当我使用VS2013中的浏览器链接仪表板启动项目时,我一直遇到同样的错误。但是,当我在调试模式下运行我的项目时,它会工作。我无法弄清楚为什么以及如何让Browser Link Dashboard工作。我检查了启动文件,没关系,按照一些答案&#34;&#34;中的描述添加了appSetting行,但没有任何效果。

显然,我错误的是单击浏览器仪表板中的错误链接。所有解决方案项目链接都显示在浏览器仪表板中,但只有启动项目链接有效。您需要单击启动项目的链接。

示例:我有2个项目,都显示在浏览器仪表板中,但只有标记为启动项目的项目才有效(在解决方案资源管理器中显示为粗体。)我认为这可能有助于有人做明显的事情,它花了我两天的时间才能发现明显的事情。

答案 17 :(得分:0)

当我获得最新的TFS而其他项目在VS的多个实例中打开时,我遇到了这个问题。我已经有了上面的所有修复。重新打开VS修复了问题。

答案 18 :(得分:0)

在我的情况下,我登录到ftp服务器。在ftp服务器上备份当前文件。从ftp服务器手动删除所有文件。清洁解决方案,重新部署代码。它奏效了。