c# - OWIN启动类缺失





asp.net-mvc-4 visual-studio-2012 (17)


如果你不想使用OWIN启动,这是你应该添加到你的web.config文件中:

AppSettings下添加以下行:

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

这是它应该如何在你的web.config中看起来像:

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

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

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

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



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




在我的情况下,我登录到FTP服务器。 在FTP服务器上备份当前文件。 从ftp服务器手动删除所有文件。 干净的解决方案,重新部署代码。 有效。




在我的情况下,我重命名了项目并更改了它的文件夹结构。 我发现在抛出错误的.c​​sproj文件中更新RootNameSpace和AssemblyName可以解决错误。 如果你修改了项目的路径,我建议你检查一下。

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



我在这里尝试了大多数推荐的修补程序,但仍无法避免出现错误消息。 我终于完成了一些推荐解决方案的组合:

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

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

  2. 展开我的项目的References节点并删除包含字符串OWIN 。 (我觉得这样做很安全,因为我的组织将来不会(也不会)成为活跃的OWIN提供者)

然后,我点击Run ,我的主页加载了。




如果通过IIS Express运行并且虚拟目录配置不正确,也可以获取此异常(即使具有正确配置的启动类)。

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




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

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

不知怎么的,当他们在bin文件夹中时,IIS仍然执行OWIN DLL。




查看Startup.cs文件,您可能会错过其中的一个。 这个文件是OWIN的入口点,所以它听起来像缺少了。 看看asp.net/aspnet/overview/owin-and-katana/… ,了解发生了什么。

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

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




当我在VS2013中使用Browser Link仪表板开始我的项目时,我一直得到同样的错误。 但是,当我在调试模式下运行我的项目时,它会起作用。 我无法弄清楚为什么以及如何让Browser Link仪表板工作。 我检查了启动文件,没有问题,按照某些答案中所述添加了appSetting行,但没有任何结果。

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

例如:我有两个项目,都显示在浏览器仪表板中,但只有标记为启动项目的项目才能正常工作(在解决方案资源管理器中显示为粗体)。我认为这可能有助于某人做显而易见的事情,这会花费我2几天就恍然大悟。




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




创建一个类名称启动这将帮助你..

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



在对SignalR进行实验之后,我遇到了这个问题,然后将它从项目中删除。 要解决,我必须删除远程服务器上站点的bin文件夹的内容,然后重新发布。




在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
        }
    }
}



尽管我无法完全解释为什么这样解决了我的问题,但在将API项目更改为独立\debug\release文件夹之后,我遇到了类似这样的问题。 一旦我将这一变化恢复到单个\bin文件夹,事情就开始奏效。

我在这里写下了我的经验: 重命名ASP.NET项目文件后,无法让OWIN启动类在IIS Express中运行




只要检查你的packages.config文件是否被签入(当被排除时,在浏览器中将会出现一个红色的不进入符号)。 由于一些奇怪的原因,我被排除在外并引发了这个问题。




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

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

正如错误所示,按照惯例,它会查找[Assembly Name] .Startup for the class ...因此请确保Startup类的名称空间与Assembly名称相同。 解决了我的问题。




如果你正在处理一个数组,那听起来你正在使用LINQ到对象,而不是SQL; 你可否确认? 大多数LINQ操作不会重新排序(输出的顺序与输入顺序相同) - 因此不要应用其他排序(OrderBy [Descending] / ThenBy [Descending])。

[编辑:正如Jon所说的更清楚; LINQ通常会创建一个新的序列,只保留原始数据]

请注意,将数据推送到Dictionary<,> (ToDictionary)将扰乱数据,因为字典不尊重任何特定的排序顺序。

但最常见的事情(选择,地点,跳过,采取)应该没问题。





c# asp.net-mvc-4 visual-studio-2012 owin