【问题标题】:No assembly found containing an OwinStartupAttribute Error找不到包含 OwinStartupAttribute 错误的程序集
【发布时间】:2017-01-04 23:45:24
【问题描述】:

这个错误

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

出现在我的屏幕上历史上最丑陋的错误页面上。

我尝试通过在配置中插入 owin:AutomaticAppStartup 来按照页面上的说明进行操作。

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

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

【问题讨论】:

  • 你可以试试&lt;add key="owin:AppStartup" value="false"&gt;&lt;/add&gt;,而不是&lt;add key="owin:AutomaticAppStartup" value="false"&gt;&lt;/add&gt;,看看是否可行?此外,还有一些帮助链接:OWIN Startup Class DetectionOwin provide startup class in web.config (no automatic startup discovery)
  • 成功了。也感谢资源。感谢@KeyurPATEL。
  • 我认为您缺少 startup.cs 文件
  • 库尔库拉是绝对正确的。您没有安装 ASP.net 身份验证系统只是为了在启动时将其丢弃。您绝对缺少项目根目录下的 startup.cs 文件。将此代码放入文件中。------------ 使用 Microsoft.Owin;使用欧文; [程序集:OwinStartupAttribute(typeof(YOURPROJECT.Startup))] namespace YOURPROJECT { public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } } }

标签: c# web-config owin .net-assembly


【解决方案1】:

将此代码添加到web.config 中的&lt;configuration&gt; 标记下,如下图所示。你的错误应该消失了。

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

【讨论】:

  • 这是解决方案,或者至少这个解决方案解决了我的问题。请将答案标记为解决方案。这个应该在顶部...
  • 谢谢,这行得通,但是有人可以告诉我通过将此设置值设置为 false 会造成什么损失吗?
【解决方案2】:

我想在项目中去掉 OWIN:

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

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

修复:

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

【讨论】:

  • 大声笑 - 删除 bin 和 obj 文件夹始终是解决奇怪依赖错误的方法
  • 我之前下载并试用了 SignalR nuget,它又添加了 owin nuget。软件包已被删除,但我还必须删除 bin 文件夹才能使其正常工作。
  • 在安装 SignalR 并中止努力后来到这里。谢谢。
  • 简单快捷。为我工作
  • 卸载 owin 包也会有所帮助,或者从引用中删除所有带有 owin 的 dll 会有所帮助
【解决方案3】:

对于那些想要开始的人,&lt;add key="owin:AutomaticAppStartup" value="false" /&gt; 不起作用,但以下对我有用。

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

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

  3. 创建“配置”方法

  4. 重建您的应用程序

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

【讨论】:

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

我缺少属性:

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

它指定了启动类。更多细节: https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection

【讨论】:

    【解决方案5】:

    检查您是否在项目中创建了 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 Identity。这就是解决方案。
    【解决方案6】:

    你提到的类中可能没有配置方法

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

    【讨论】:

      【解决方案7】:

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

      代替

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

      原来是

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

      【讨论】:

        【解决方案8】:

        只是替换

                using (WebApp.Start(url))
        

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

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

        【讨论】:

          【解决方案9】:

          在 Web.config 中添加以下键将删除代码

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

          【讨论】:

            【解决方案10】:

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

            【讨论】:

              【解决方案11】:

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

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

              在标签&lt;appSettings&gt;之后

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

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

              在标签&lt;system.web&gt;之后添加下一个代码可以在开头

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

              在我的情况下是:

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

              【讨论】:

                【解决方案12】:

                添加类 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);
                        }
                    }
                }
                

                【讨论】:

                  【解决方案13】:

                  我在 Visual Studio 2019 V 16.10.2 中发现了一个错误,当您项目名称中有空格,而您的命名空间包含下划线时,该错误会引发此错误。要解决此问题,您必须在 web.config -> appSettings 部分中明确设置启动类路径:

                  <add key="owin:AppStartup" value="ABC_DEF.Startup"/>
                  

                  【讨论】:

                    【解决方案14】:

                    我从不工作的分支中删除了所有 DLL,然后我将所有工作的分支中的所有 DDls 复制到了不工作的分支。这解决了问题。

                    【讨论】:

                      【解决方案15】:

                      只需将此代码&lt;add key="owin:AutomaticAppStartup" value="false" /&gt; 粘贴到 Web.config 中,而不是在 web.config 中有两个 webconfig,因此请确保将其粘贴到 Web.Config 中

                      【讨论】:

                        【解决方案16】:

                        如果你想使用信号器 您必须在项目中添加 startup.cs

                        在你的项目中右击然后添加新项目并选择OWIN Startup Class

                        然后在Configuration方法里面添加代码

                        app.MapSignalR();
                        

                        希望对你有用

                        【讨论】:

                          【解决方案17】:

                          如果部署到 Azure,您会收到此错误。只需删除站点上的所有文件(备份任何 web.config、appsettings.json 或您不想丢失的任何文件)并再次部署。有一些遗留的 dll 文件不应该在站点上,这使得 Azure 门户认为它需要使用 OWIN。

                          【讨论】:

                            【解决方案18】:

                            将以下代码添加到您的 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>
                            

                            【讨论】:

                              【解决方案19】:

                              我的情况需要 owin 启动类。 添加新项目 > OWIN 启动类 > 命名 Startup.cs

                              【讨论】:

                                【解决方案20】:

                                就我而言,我有一个带有表单身份验证的主站点。我需要在该站点下创建一个使用身份提供者进行单点登录的 Web 应用程序。 SSO 应用程序必须读取 Owin 支持的 cookie,并将其转换为 Form cookie 以使两种身份验证兼容。 问题是它安装在 Owin 程序集的主站点下,并且由于某种原因,即使它们没有在代码或配置文件中使用,它们也会被调用并试图找到 Startup 类。

                                解决方案是卸载 Nuget 在主站点上添加的所有 Owin 程序集。

                                【讨论】:

                                  猜你喜欢
                                  • 2014-09-06
                                  • 2012-12-15
                                  • 1970-01-01
                                  • 2023-03-23
                                  • 1970-01-01
                                  • 2012-10-26
                                  • 2015-01-16
                                  • 2010-12-12
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多