缺少OWIN启动类


226

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

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

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

7
你有Startup.cs项目吗?
christiandev

4
您的程序集中是否包含OwinStartupAttribute?您的程序集是A 类Startup还是[AssemblyName].Startup类?通过owin:AutomaticAppStartup在web.config中添加值为“ false” 的appSetting来禁用OWIN启动发现吗?您是否做过其中一件事情,并且想知道为什么它不起作用?你的问题是什么?
ta.speot。是

1
就是这样 当我尝试在项目中添加新Item时,它没有显示OWIN Startup类。我在谷歌上搜索,它说通过nuget添加OWIN参考,我也做了同样的事情。仍然无法添加该类。
Krunal Patil

Answers:


213

使用“名称启动”创建一个类,这将对您有所帮助。

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

116
除此之外,如果您的启动类某种程度上不在您的默认名称空间中,请在以下<appSettings>区域添加Web配置行:<add key="owin:AppStartup" value="[NameSpace].Startup" />
Andrew Gray

7
Nowaday,有3种方式configurate owin:asp.net/aspnet/overview/owin-and-katana/...
Jaider

22
除了@安德鲁-灰色的评论,投入[assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]AssemblyInfo.cs将工作太。
阿喀琉斯(Achilles)

14
您还需要Microsoft.Owin.Host.SystemWeb软件包,否则不会调用启动
rjlopes 2015年

7
我们也可以在Startup类的名称空间之前添加以下行: [assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
Minh Nguyen

194

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

问题是我的bin文件夹中存在额外的owin dll。当我删除它们时,问题已解决。您应该通过删除bin文件夹来删除它们。干净的解决方案不会删除这些dll。

当它们位于bin文件夹中时,IIS仍会以某种方式执行OWIN dll。


6
我也遇到了这个问题,还必须确保参考文件没有引用任何OWIN DLL。
黑客

2
相同的问题和相同的解决方案。但是在我的情况下,我只有一个带有Signalr的代码分支,另一个没有。切换分支时,即使清理后,Signalr dll仍然保留。我需要手动删除它们。
Kywillis 2014年

3
请注意,从字面上看,这实际上意味着bin文件夹不仅使用Visual Studio中的“清理解决方案”,在我看来,这是删除大多数DLL,但不是全部。
艾伦·麦克唐纳

1
在删除OWIN引用后,仍然对我有用的东西仍然是<add key="owin:AutomaticAppStartup" value="false"/>作为appSetting 添加的。只是给尝试此方法的人一些建议,它仍然没有成功。
LatentDenis '16

1
对于那些对此不起作用的人,请确保即使在删除项目文件夹中的bin文件夹后,也要删除对Owin dll的引用。在我的情况下,我删除了bin文件夹,但忘记了.csproj文件中仍然有(未使用的)引用。
akousmata

104

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

在此处输入图片说明

模板产生这样的类:

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
VS2015也需要这个
汤姆·斯蒂克2015年

2
这样做对我有用-我创建了Startup.cs文件并正确地填充了它,但是错过了它必须位于App_Start文件夹中。在我的开发机上运行良好,但是一旦发布就出错了。谢谢!
乔恩·彼得森

记得添加app.MapSignalR(); 在Configuration(IAppBuilder应用)中,否则在调用[YourSite] / signalr时返回404
Kasper Halvas Jensen 16'Aug

45

如果您不想使用OWIN启动,则应将其添加到web.config文件中:

AppSettings下添加以下行:

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

这就是您的web.config中的样子:

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

1
这实际上是完整答案之一。如果您不太喜欢web.config设置,则很难确定应该在xml文件中添加
makoshichi

25

看一下Startup.cs文件,您可能会缺少其中之一。该文件是OWIN的入口点,因此听起来像缺少该文件。看看OWIN Startup class这里了解发生了什么。

如您的错误所指定,您可以通过执行以下操作在web.config中将其禁用:

要禁用OWIN启动发现,请在web.config中添加值为“ false”的appSetting owin:AutomaticAppStartup。


5
我已添加<add key="owin:AutomaticAppStartup" value="false" />到该<appSettings>组中,不再需要Startup.cs。
webworm

@webworm,我在上面提到了。
christiandev

2
@christiandev到底会<add key="owin:AutomaticAppStartup" value="false" />做什么?会禁用任何功能吗?我们是否需要稍后启动应用程序才能使用任何OWIN功能?
Flo 2015年

18

首先,必须创建启动文件,然后必须在app.Settings标记内的web.config中使用以下命令行指定此文件的语言环境:

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

它解决了我的问题。


11

我遇到了这个问题,了解这不是OP的问题所在,但就我而言,我确实有一个Startup类,但默认情况下并没有找到它。

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

正如错误所暗示的,按照惯例,它将为该类寻找[Assembly Name] .Startup ...,因此请确保您的Startup类的名称空间与Assembly名称相同。为我解决了问题。


1
我有一个类似的问题。我的项目名称中带有“-”连字符,VS将该名称转换为下划线,因此名称空间和启动类本质上是不同的。
LDJ,2014年

7

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

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

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

  2. 扩展项目的“引用”节点,并删除包含字符串的所有内容OWIN。(这样做很安全,因为将来我的组织不是(也不会成为)活跃的OWIN提供者)

然后Run,我单击并立即加载我的主页。


4

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

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

神圣的牛敬拜你,兄弟,就像永远被困在上面一样,直到我读到这篇文章之前,都没有找到解决方案,在我手动更改它之后,AssemblyName并没有更新。现在可以了!非常感谢!
梅森

3

我的情况?我有启动文件,但该文件不包含在项目中。我只包含了它,错误消失了。


3

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

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

因此,添加它,您应该就很好了。这是在命名空间开始之前进行的。


2

如果通过IIS Express运行并且虚拟目录配置不正确,则也有可能获得此异常(即使您具有正确配置的启动类)。

当我遇到此问题时,解决方案只是在项目属性的“ Web”选项卡中按“ Create Virtual Directory”按钮(使用Visual Studio 2013)


2

您是否真的要在项目中添加OWIN或这是意外的?

  1. 如果要添加OWIN,则可以添加Startup类。

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

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

    Owin.dll是试图识别Startup类的一个。



1

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


1

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


0

在VS2013中使用浏览器链接仪表板启动项目时,我始终遇到相同的错误。但是,当我以调试模式运行项目时,它将起作用。我不知道为什么以及如何使Browser Link仪表板正常工作。我检查了启动文件,一切正常,按照一些答案“”中的描述添加了appSetting行,但是没有任何效果。

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

示例:我有2个项目,都显示在“浏览器仪表板”中,但是只有一个标记为启动项目的项目可以工作(在“解决方案资源管理器”中显示为粗体。)我认为这可以帮助别人做明显的事情,这花了我2天跌跌撞撞地走了。


0

当我在VS的多个实例中打开其他项目时,当我获得有关TFS的最新信息时,便遇到了这个问题。我已经有了上面的所有修复程序。重新打开VS可以解决此问题。


0

以我为例,我登录了ftp服务器。备份了ftp服务器上的当前文件。从ftp服务器手动删除所有文件。干净的解决方案,重新部署了代码。有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.