ChatGPT解决这个技术问题 Extra ChatGPT

缺少 OWIN 启动类

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

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

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

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

c
cracker

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

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

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

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

问题是我的 bin 文件夹中多余的 owin dll。当我删除它们时,问题就解决了。您应该通过删除 bin 文件夹来删除它们。 Clean Solution 不会删除这些 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 文件中仍然有(未使用的)引用。
T
Timuçin

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

https://i.stack.imgur.com/fN0lO.png

该模板产生这样一个类:

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 :)
Y
Yonatan Ayalon

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

在 AppSettings 下添加以下行:

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

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

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

这实际上是完整的答案之一。如果您不是很了解 web.config 设置,则很难确定应该在 xml 文件中添加键和值
C
Christian Phillips

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

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

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


我将 <add key="owin:AutomaticAppStartup" value="false" /> 添加到 <appSettings> 组,不再需要 Startup.cs。
@webworm,我在上面提到过。
@christiandev <add key="owin:AutomaticAppStartup" value="false" /> 究竟会做什么?它会禁用任何功能吗?我们是否需要稍后启动应用程序才能使用任何 OWIN 功能?
S
Slaters

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

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

它解决了我的问题。


T
TCC

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

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

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


我有一个类似的问题。我的项目名称中有一个'-'连字符,被VS转换为下划线,所以命名空间和启动类本质上是不同的。
C
Community

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

将此条目添加到我的 web.config 的 AppSettings 部分的顶部: 展开我的项目的引用节点并删除包含字符串 OWIN 的所有内容。 (我觉得这样做很安全,因为我的组织将来不是(也不会是)活跃的 OWIN 提供者)

然后我点击了 Run 并立即加载了我的主页。


U
Unlearnd

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

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

向你致敬,兄弟,一直被困在上面,直到我读到这篇文章才找到解决方案,在我手动更改之后,AssemblyName 没有更新。现在它起作用了!太感谢了!
m
mcarter

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

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


G
Gellie Ann

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


c
carraua

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

如果你想添加 OWIN,添加一个 Startup 类是要走的路。如果您不需要对 Owin 的任何引用:从 /bin 文件夹中删除 Owin.dll。 Owin.dll 是一个试图识别 Startup 类的文件。


D
Diceyus

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

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

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


C
Community

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

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


O
Owen Pauling

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


I
Ian

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


a
alikuli

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

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

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


P
PersyJack

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


K
Kurkula

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅