找不到包含OwinStartupAttribute的程序集错误。

107

在尝试加载应用程序时出现以下错误: - 没有包含带有OwinStartupAttribute的程序集。 - 未找到给定类型或方法“false”。请尝试指定程序集。 要禁用OWIN启动发现,请在web.config中添加appSetting owin:AutomaticAppStartup,并将其值设置为“false”。 要指定OWIN启动程序集、类或方法,请在web.config中添加appSetting owin:AppStartup,其中包含完全限定的启动类或配置方法名称。

这个错误出现在史上最难看的错误页面上。

输入图像描述

我尝试按照页面上的说明通过在配置文件中插入owin:AutomaticAppStartup来解决问题。

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

这并没有解决问题。有什么建议吗?


11
你能否尝试使用 <add key="owin:AutomaticAppStartup" value="false"></add> 代替 <add key="owin:AppStartup" value="false"></add>,看看是否有效?此外,以下链接可能有所帮助:OWIN启动类检测Owin在web.config中提供启动类(无自动启动发现) - Keyur PATEL
这就解决了问题。还要感谢提供的资源。我对@KeyurPATEL表示感激之情。 - NVA
3
我认为你缺少了 startup.cs 文件。 - Kurkula
4
Kurkula 是对的。你不会只是在启动时将 ASP.net 认证系统安装好就抛弃它。你确实缺少项目根目录下的 startup.cs 文件。请在此文件中加入以下代码:--------使用 Microsoft.Owin; using Owin;[assembly: OwinStartupAttribute(typeof(YOURPROJECT.Startup))] namespace YOURPROJECT { public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } } } - Paras Parmar
22个回答

202

按照下图所示,在<configuration>标记下方的 web.config 文件中添加此代码。然后您的错误应该就解决了。

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

下方的图片


4
这就是解决办法,或者至少这个解决方案解决了我的问题。请将一个答案标记为解决方案。这个应该排在最上面... - Mason
3
谢谢,这个方法确实有效,但有没有人能告诉我将此设置值设为 false 会失去什么? - IKriKan

98

我想要在项目中摆脱OWIN:

  1. 从项目中删除OWIN的引用和Nuget包
  2. 清理并重新构建项目
  3. 运行应用程序

然后我遇到了OWIN错误。 这些步骤没有起作用,因为OWIN.dll仍然存在于bin/目录中

修复:

  1. 手动删除bin/目录
  2. 重新构建项目

16
删除 bin 和 obj 文件夹通常是解决奇怪依赖错误的方法。 - mfcallahan
4
我之前已经下载并尝试使用过SignalR nuget包,它又添加了owin nuget包。这些包已被删除,但我还必须删除bin文件夹才能让它正常工作。 - mortb
安装了SignalR后放弃尝试,现在来到这里。谢谢。 - zombiehugs
简单快捷。对我有用。 - Dash
这也解决了我的问题。我尝试添加web.config条目,但出现了其他奇怪的错误,但尝试后它们全部消失了。 - Michael Merrell
显示剩余3条评论

27

如果您想要禁用自动启动 owina,则 <add key="owin:AutomaticAppStartup" value="false" /> 将不起作用,但以下方法对我有效:

  1. 如果在 Startup.Auth 文件中有一个部分类 "Startup",请创建另一个部分类的 Startup 类并将其放在项目根目录下。

  2. 定义一个指向该类的 owinstartup 属性。

  3. 创建一个 "Configuration" 方法。

  4. 重新生成应用程序。

您还可以创建 "Configuration" 方法,并将程序集属性添加到 Startup.Auth 中,但按照这种方式操作可以通过利用 C# 类定义拆分将您的 Startup 类分隔开来。更多信息请阅读:https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods

这是我的 Startup.cs 文件:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectNameSpace.Startup))]

namespace ProjectNameSpace
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

1
这对我有用,我意识到当项目名称中有一个点时会发生这种情况。因此,如果命名空间类似于“namespace ProjectNameSpace.ApiRest”,那么像您示例中定义程序集的方式可以解决问题。 - karique

12

10

检查您的项目中是否创建了Startup类。以下是一个示例:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof({project_name}.Startup))]

namespace AuctionPortal
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

为了充分利用ASP.net身份验证,这就是解决方案。 - Paras Parmar

6
您提到的类中可能没有配置方法。
<appSettings>
<add key="owin:AppStartup" value="WebApplication1.App_Start.Startup"/>


3

因为代码中多了一个空格,导致出现了这个错误。

应该是:

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

而不是:

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


3
只需要将其替换
        using (WebApp.Start(url))

使用

        using (WebApp.Start<Startup>(url))

解决了我的问题。名为“Startup”的类已经实现。如@robthedev所述。

2
在Web.config中添加以下键将会删除该代码。
<appSettings>

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

1

请检查您是否选择了正确的启动项目。我之前选择了一个Web API项目作为启动项,导致了这个错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接