【问题标题】:OWIN Startup Class Missing缺少 OWIN 启动类
【发布时间】:2013-12-02 19:13:10
【问题描述】:

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

尝试加载应用时出现以下错误。

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

【问题讨论】:

  • 项目中有Startup.cs吗?
  • 您的程序集是否包含OwinStartupAttribute?您的程序集是 Startup 或 [AssemblyName].Startup 类吗?您是否通过在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup 禁用了 OWIN 启动发现?您是否做过其中一件事情并且想知道为什么它不起作用?你有什么问题?
  • 就是这样。当我尝试在我的项目中添加新项目时,它没有显示 OWIN Startup 类。我在谷歌上搜索它说通过 nugets 添加 OWIN 引用,我也这样做了。仍然没有让类添加。

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


【解决方案1】:

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

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

【讨论】:

  • 除此之外,如果您的启动类不知何故不在您的默认名称空间中,请在<appSettings> 区域添加一个网络配置行,例如:<add key="owin:AppStartup" value="[NameSpace].Startup" />
  • 现在配置owin的方法有3种:asp.net/aspnet/overview/owin-and-katana/…
  • 除了@andrew-gray 的评论,将[assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))] 放入AssemblyInfo.cs 也可以。
  • 你还需要 Microsoft.Owin.Host.SystemWeb 包,否则不会调用启动
  • 我们也可以在 Startup 类的命名空间之前添加这一行:[assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]
【解决方案2】:

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

问题是我的 bin 文件夹中有多余的 owin dll。当我删除它们时,问题就解决了。您应该通过删除 bin 文件夹来删除它们。 清洁解决方案不会删除这些 dll。

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

【讨论】:

  • 我也遇到了这个问题,还必须确保引用没有引用任何 OWIN DLL。
  • 同样的问题和同样的解决方案。但是在我的情况下,我有一个带有 Signalr 的代码分支和一个没有。切换分支时,即使在 Clean 之后,Signalr dll 仍然存在。我需要手动删除它们。
  • 请注意,这意味着 bin 文件夹不仅仅是使用 Visual Studio 中的“清洁解决方案”,在我的情况下,它删除了大多数 DLL,但不是全部。
  • 对我有用的东西是在删除 OWIN 引用之后,它仍然无法正常工作,将 <add key="owin:AutomaticAppStartup" value="false"/> 添加为 appSetting。只是给尝试这个的人一些建议,但它仍然没有成功。
  • 对于这不起作用的人,请确保即使您删除了进入项目引用的 bin 文件夹并删除对 Owin dll 的引用。就我而言,我删除了 bin 文件夹,但忘记了 .csproj 文件中还有(未使用的)引用。
【解决方案3】:

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

【讨论】:

  • VS2015 也需要这个
  • 这为我完成了 - 我创建了 Startup.cs 文件并正确填充它,但错过了它需要位于 App_Start 文件夹中。在我的开发机器上运行良好,但一旦发布就会出错。谢谢!
  • 记得添加app.MapSignalR();在配置(IAppBuilder 应用程序)中,否则调用 [YourSite]/signalr 时返回 404
  • 感谢截图。这真的很有帮助。
  • 为了后代的利益,我最近在尝试将 Dancing Goat 帐户相关功能实现到在 Kentico 12SP 下创建的新 Kentico MVC 项目中时遇到此错误。在安装了正确的 Owin 软件包后,出现了这篇文章中的错误。在遵循这篇文章的建议后,它被修复了。 TYVM :)
【解决方案4】:

如果您不想使用 OWIN 启动,您应该将以下内容添加到您的 web.config 文件中:

在 AppSettings 下添加以下行:

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

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

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

【讨论】:

  • 这实际上是完整的答案之一。如果您不是很了解 web.config 设置,则很难确定您应该在 xml 文件中添加 key 和 value
【解决方案5】:

查看Startup.cs 文件,您可能缺少其中一个。此文件是 OWIN 的入口点,因此听起来好像缺少此文件。在此处查看OWIN Startup class 以了解发生了什么。

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

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

【讨论】:

  • 我将&lt;add key="owin:AutomaticAppStartup" value="false" /&gt; 添加到&lt;appSettings&gt; 组中,不再需要Startup.cs。
  • @webworm,我在上面提到过。
  • @christiandev &lt;add key="owin:AutomaticAppStartup" value="false" /&gt; 究竟会做什么?它会禁用任何功能吗?我们是否需要稍后启动应用才能使用任何 OWIN 功能?
【解决方案6】:

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

&lt;add key="owin:AppStartup" value="[NameSpace].Startup"/&gt;

它解决了我的问题。

【讨论】:

    【解决方案7】:

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

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

    正如错误提示的那样,按照惯例,它会为类查找 [Assembly Name].Startup...所以请确保 Startup 类的命名空间与程序集名称相同。为我解决了这个问题。

    【讨论】:

    • 我遇到了类似的问题。我的项目名称中有一个'-'连字符,被VS转换为下划线,所以命名空间和启动类本质上是不同的。
    【解决方案8】:

    我在这里尝试了大多数推荐的修复方法,但仍然无法避免错误消息。我最后综合了几个推荐的解决方案:

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

      &lt;add key="owin:AutomaticAppStartup" value="false"/&gt;

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

    然后我点击了Run,我的主页就被加载了。

    【讨论】:

      【解决方案9】:

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

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

      【讨论】:

      • 向你致敬,兄弟,一直卡在它上面,直到我读到这篇文章才找到解决方案,AssemblyName 在我手动更改后没有更新。现在它起作用了!非常感谢!
      【解决方案10】:

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

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

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

          您是真的想将 OWIN 添加到您的项目中,还是出乎意料?

          1. 如果你想添加 OWIN,添加一个 Startup 类是可行的方法。

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

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

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

          【讨论】:

            【解决方案13】:

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

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

            所以添加它,你应该很高兴。这发生在命名空间开始之前。

            【讨论】:

              【解决方案14】:

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

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

              【讨论】:

                【解决方案15】:

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

                【讨论】:

                  【解决方案16】:

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

                  【讨论】:

                    【解决方案17】:

                    当我在 VS2013 中使用浏览器链接仪表板开始我的项目时,我一直收到同样的错误。但是,当我在调试模式下运行我的项目时,它会起作用。我不知道为什么以及如何让浏览器链接仪表板工作。我检查了启动文件,很好,添加了一些答案“”中描述的appSetting行,但没有任何效果。

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

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

                    【讨论】:

                      【解决方案18】:

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

                      【讨论】:

                        【解决方案19】:

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

                        【讨论】:

                          猜你喜欢
                          • 2017-11-23
                          • 2014-03-25
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 1970-01-01
                          • 2019-04-13
                          • 2017-05-21
                          • 1970-01-01
                          相关资源
                          最近更新 更多