OWIN启动类丢失

Kru*_*til 223 c# asp.net-mvc-4 visual-studio-2012 owin

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

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

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

cra*_*ker 209

使用Name Startup创建一个类,这将帮助您..

public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 除此之外,如果您的启动类不在默认名称空间中,请在`<appSettings>`区域添加一个Web配置行,如:`<add key ="owin:AppStartup"value ="[NameSpace].启动"/>` (115认同)
  • 除了@ andrew-grey的注释之外,将`[assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]`放入`AssemblyInfo.cs`也可以. (22认同)
  • 你还需要Microsoft.Owin.Host.SystemWeb包,否则不会调用Startup (14认同)
  • 现在,有三种配置owin的方法:http://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection (7认同)
  • 我们也可以在Startup类的命名空间之前添加这一行:`[assembly:OwinStartup(typeof([YourStartupNamespaceName] .Startup))]` (6认同)

Hüs*_*ğlı 194

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

问题是我的bin文件夹中的额外owin dll.当我删除它们时,问题得到了解决.您应该删除bin文件夹来删除它们.Clean Solution不会删除这些dll.

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

  • 我也有这个问题,还必须确保引用没有引用任何OWIN DLL. (6认同)
  • 只是说明这个字面意思是bin文件夹不仅仅是使用Visual Studio中的"Clean Solution",在我的例子中是删除大多数DLL而不是全部. (3认同)
  • 同样的问题和相同的解决方 但是在我的情况下,我有一个代码分支与Signalr和一个没有.当切换分支时,即使在清洁之后,信号器dll仍然存在.我需要手动删除它们. (2认同)

Tim*_*çin 103

在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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • VS2015也需要它 (3认同)
  • 这样做对我来说 - 我创建了Startup.cs文件并正确填充但错过了它需要在App_Start文件夹中.在我的开发机器上运行良好,但一旦发布就错了.谢谢! (2认同)

Yon*_*lon 44

如果您不想使用OWIN启动,那么您应该添加到web.config文件中:

AppSettings下添加以下行:

    <add key="owin:AutomaticAppStartup" value="false" />
Run Code Online (Sandbox Code Playgroud)

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

  <appSettings>
    <add key="owin:AutomaticAppStartup" value="false" />
  </appSettings>
Run Code Online (Sandbox Code Playgroud)


chr*_*dev 25

查看Startup.cs文件,您可能会遗漏其中一个.这个文件是OWIN的入口点,所以听起来好像缺少了.看看OWIN Startup class这里了解最新情况.

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

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

  • 我将`<add key ="owin:AutomaticAppStartup"value ="false"/>`添加到`<appSettings>`组中,不再需要Startup.cs. (5认同)
  • @christiandev到底是什么`<add key ="owin:AutomaticAppStartup"value ="false"/>`做什么?它会禁用任何功能吗?我们是否需要稍后启动应用程序才能使用任何OWIN功能? (2认同)

Sla*_*ers 17

首先,您必须创建启动文件,并且必须在web.config中指定此文件的区域设置后,在此appSettings标记内使用以下行:

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

它解决了我的问题.


TCC*_*TCC 11

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

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

正如错误所示,按照惯例,它会查找[程序集名称].类的启动...所以请确保您的Startup类的名称空间与程序集名称相同.解决了我的问题.


Jas*_*ell 7

我在这里尝试了大多数推荐的修复程序,仍然无法避免错误消息.我终于完成了几个推荐的解决方案的组合:

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

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

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

然后我点击了Run我的主页.


小智 5

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

<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
Run Code Online (Sandbox Code Playgroud)