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

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

没有找到包含OwinStartupAttribute的程序集。 没有找到包含Startup或[AssemblyName]的程序集。启动类。禁用OWIN启动发现,添加appSetting owin:在你的web.config中,AutomaticAppStartup的值为“false”。 要指定OWIN启动程序集、类或方法,请添加 appSetting owin:使用完全合格的启动类或 config中的配置方法名称。


当前回答

检查一下你的包裹。配置文件被签入(当排除时,在资源管理器中会显示一个红色的无条目符号)。由于一些奇怪的原因,我的被排除在外,导致了这个问题。

其他回答

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

在Visual Studio 2015中,当你在MVC项目中使用Azure AD时,也会遇到这种情况。在这里,它在App_Start文件夹中创建了startup . auth .cs启动文件,但它将缺少

[assembly: OwinStartup(typeof(MyWebApp.Startup))]

加进去就可以了。这在命名空间开始之前。

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

添加这个条目到我的web.config的AppSettings部分的顶部: <add key="owin:AutomaticAppStartup" value="false"/> 展开项目的References节点并删除包含字符串OWIN的所有内容。(我觉得这样做是安全的,因为我的组织在未来不是(也不会是)一个活跃的OWIN提供商)

然后我点击运行,我的主页就加载了。

虽然我不能完全解释为什么这为我解决了这个问题,但在我将API项目更改为build以分离\debug和\release文件夹后,我遇到了这样的问题。一旦我将更改还原到单个\bin文件夹,事情就开始工作了。

我把我的经验写在这里:不能让OWIN启动类在IIS Express重命名ASP后运行。NET项目文件

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

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