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


87

这个错误

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

出现在我的屏幕上,这是历史上创建的最丑陋的错误页面。

在此处输入图片说明

我尝试通过在配置中插入owin:AutomaticAppStartup来遵循页面上的指示。

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

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


6
而不是<add key="owin:AppStartup" value="false"></add>您可以尝试<add key="owin:AutomaticAppStartup" value="false"></add>看看是否可行?此外,还有一些帮助链接:OWIN启动类检测Owin在web.config中提供启动类(无自动启动发现)
Keyur PATEL

做到了。也感谢您的资源。我的谢意@KeyurPATEL。
NVA

2
我认为你缺少startup.cs文件
Kurkula

2
库尔库拉是绝对正确的。您没有安装ASP.net auth系统只是为了在启动时将其丢弃。您绝对缺少项目根目录下的startup.cs文件。将此代码放在文件中。-------------使用Microsoft.Owin; 使用Owin;[程序集:OwinStartupAttribute(typeof(YOURPROJECT.Startup))]命名空间YOURPROJECT {公共部分类Startup {public void Configuration(IAppBuilder app){ConfigureAuth(app); }
Paras Parmar,

Answers:


171

将此代码添加web.config<configuration>标签下,如下图所示。您的错误应该消失了。

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

查看下面的图片


4
这是解决方案,或者至少此解决方案解决了我的问题。请标记答案作为解决方案。这个应该在顶部...
Mason

1
谢谢,这可行,但是有人可以通过将此设置值设置为false来告诉我我正在失去什么吗?
IKriKan

83

我想在项目中摆脱OWIN:

  1. 从项目中删除OWIN参考和Nuget包
  2. 清理和重建项目
  3. 运行应用

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

固定:

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

12
大声笑-删除bin和obj文件夹始终是怪异依赖错误的解决方法
matt.fc

4
我之前曾下载并尝试过SignalR nuget,而该信号又添加了owin nuget。软件包已删除,但我还必须删除bin文件夹才能使其正常运行。
mortb '17年

在安装SignalR并中止尝试后来到这里。谢谢。
John Gerdsen

简单快捷。工作对我来说
短跑

卸载owin软件包也将有所帮助,或者从引用中删除所有带有
owin的

23

对于那些想要owin开始的人来说,<add key="owin:AutomaticAppStartup" value="false" />不会起作用,但是以下内容对我有用。

  1. 如果您在Startup.Auth文件中有一个局部类“ Startup”,请在项目的根目录中创建另一个局部启动类。

  2. 定义一个指向该类的程序集owinstartup属性

  3. 创建一个“配置”方法

  4. 重建您的应用程序

您还可以创建“配置”方法,并将程序集属性添加到Startup.Auth,但是这样做可以通过利用C#类定义拆分来使Startup类保持分离。在此处阅读更多信息:https : //docs.microsoft.com/zh-cn/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);
        }
    }
}

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


6

您可能没有在您提到的类中使用Configuration方法

<appSettings>
<add key="owin:AppStartup" value="WebApplication1.App_Start.Startup"/>


3

我收到此错误,因为代码中有多余的空格

代替

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

它是

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


3

检查是否在项目中创建了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,

2

只是更换

        using (WebApp.Start(url))

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

解决了我的问题。名为Startup的类已经实现。正如@robthedev所提到的



1

检查您是否选择了正确的启动项目。我有一个Web api项目作为启动。那产生了这个错误。


1

我知道这篇文章很旧,但以防万一有人在寻找相同的错误,请尝试添加

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

标签后 <appSettings>

如果之后出现下一个错误:

HTTP错误401.0-未经授权的错误消息

在标签之后添加下一个代码,<system.web>它可以位于开头

<authentication mode="Forms"> <forms loginUrl="~/YourFolderName/yourFileName" timeout="1" /> </authentication>

就我而言是:

<authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="1" /> </authentication>



0

只需将这段代码粘贴 <add key="owin:AutomaticAppStartup" value="false" /> 到Web.config中即可。不在web.config中有两个webconfig,因此请确保将其粘贴到Web.Config中


0

如果要使用Signalr,则必须添加startup.cs在项目中类

右键单击您的项目,然后添加新项目并选择OWIN Startup Class

然后在下面的配置方法中添加代码

app.MapSignalR();

希望对您有用


0

使用以下代码将类Startup.cs添加到项目的根目录:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartupAttribute(typeof(ProjectName.Startup))]
namespace ProjectName
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

0

如果部署到Azure,则出现此错误。只需删除站点上的所有文件(备份任何web.config,appsettings.json或任何您不想丢失的文件),然后再次进行部署。还有一些不应该在站点上的dll文件,这使Azure门户认为它需要使用OWIN。


0

将以下代码添加到您的web.config文件中,然后运行项目...

    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
    </dependentAssembly>
    </runtime>
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.