我收到此错误,因为我的项目无法找到 OWIN
启动类的引用 . 我've even installed all the OWIN reference packages through Nuget still getting the same issue. I' m使用 Visual Studio 2012
和 MVC4
.
尝试加载应用程序时发生以下错误 .
找不到包含OwinStartupAttribute的程序集 . 找不到包含Startup或[AssemblyName] .Startup类的程序集 . 要禁用OWIN启动发现,请在web.config中添加值为“false”的appSetting owin:AutomaticAppStartup . 要指定OWIN启动程序集,类或方法,请在web.config中使用完全限定的启动类或配置方法名称添加appSetting owin:AppStartup .
19 回答
使用名称启动创建一个类这将帮助您..
在我们的项目中,我们不需要OWIN功能,因此我们从初始的ASP.NET MVC模板项目中删除了所有owin引用 . 删除OWIN启动类后出现问题 .
问题是我的bin文件夹中的额外owin dll . 当我删除它们时,问题得到了解决 . 您应该删除bin文件夹来删除它们 . Clean Solution 不会删除这些dll .
不知何故,当IIS位于bin文件夹中时,IIS仍会执行OWIN dll .
在Visual Studio 2013 RC2上,有一个模板 . 只需将其添加到App_Start文件夹即可 .
模板生成这样一个类:
如果您不想使用OWIN启动,那么您应该添加到 web.config 文件中:
在 AppSettings 下添加以下行:
这是它在web.config中的样子:
查看
Startup.cs
文件,您可能会遗漏其中一个 . 这个文件是OWIN的入口点,所以听起来好像缺少了 . 看看OWIN Startup class在这里了解最新情况 .如您的错误指定,您可以通过执行以下操作在web.config中禁用此功能...
首先,您必须创建启动文件,并且必须在web.config中指定此文件的区域设置后,在此appSettings标记内使用以下行:
<add key="owin:AppStartup" value="[NameSpace].Startup"/>
它解决了我的问题 .
我有这个问题,明白这不是OP的情况下的错误,但在我的情况下,我确实有一个Startup类,它只是默认没有找到它 .
我的问题是我的程序集名称中有空格,因此默认名称空间与程序集名称不同,因此启动类的名称空间与程序集名称不同 .
正如错误所示,按照惯例,它会查找[程序集名称] . 类的启动...所以请确保您的Startup类的名称空间与程序集名称相同 . 解决了我的问题 .
我在这里尝试了大多数推荐的修复程序,仍然无法避免错误消息 . 我终于完成了几个推荐的解决方案的组合:
AppSettings
部分的顶部:<add key="owin:AutomaticAppStartup" value="false"/>
OWIN
的所有内容 . (我觉得这样做很安全,因为我的组织未来(也不会)是未来的活跃OWIN提供商)然后我点击了
Run
并且我的主页已经加载了 .我的情况?我有启动文件,但它被排除在项目中 . 我只是把它包括在内并且错误就剩下了 .
在我的情况下,我重命名了项目并更改了它的文件夹结构 . 我发现更新抛出错误的.csproj文件中的RootNameSpace和AssemblyName解决了错误 . 如果您修改了项目的路径,我建议您也检查一下 .
如果通过IIS Express运行并且未正确配置虚拟目录,也可能会出现此异常(即使您具有正确配置的启动类) .
当我遇到此问题时,解决方案只是按下项目属性的“Web”选项卡中的“创建虚拟目录”按钮(使用Visual Studio 2013)
当您将Azure AD与MVC项目一起使用时,Visual Studio 2015中也可能会出现这种情况 . 在这里它创建启动文件作为App_Start文件夹中的Startup.Auth.cs但它将缺少
所以添加它,你应该很高兴去 . 这在命名空间开始之前 .
虽然我无法完全解释为什么这为我解决了这个问题,但在我将API项目更改为单独的
\debug
和\release
文件夹之后,我遇到了类似这样的问题 . 一旦我将该更改恢复为构建到单个\bin
文件夹,事情就开始起作用了 .我在这里写下了我的经历:Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file
我在尝试使用SignalR然后将其从项目中删除后遇到了这个问题 . 要解决我必须删除远程服务器上的站点的bin文件夹的内容,然后发布再次 .
您是否真的尝试将OWIN添加到您的项目中,或者这是意料之中的事情?
如果您想添加OWIN,可以添加一个Startup类 .
如果 you don't 需要对 Owin 的任何引用:
delete Owin.dll from your /bin folder .
Owin.dll是试图识别Startup类的人 .
只需检查您的
packages.config
文件是否已签入(排除时,资源管理器中将显示红色的禁止输入符号) . 由于某些奇怪的原因,我被排除在外并造成了这个问题 .当我使用VS2013中的浏览器链接仪表板启动项目时,我一直收到同样的错误 . 但是,当我在调试模式下运行我的项目时,它会工作 . 我无法弄清楚为什么以及如何让Browser Link Dashboard工作 . 我检查了启动文件,没关系,按照一些答案中的描述添加了appSetting行,但没有任何效果 .
显然,我错误的是单击浏览器仪表板中的错误链接 . 所有解决方案项目链接都显示在浏览器仪表板中,但只有启动项目链接有效 . 您需要单击启动项目的链接 .
示例:我有两个项目,都显示在浏览器仪表板中,但只有标记为启动项目的项目才有效(在解决方案资源管理器中显示为粗体 . )我认为这可能有助于某人做明显的事情,它花了我2几天可以偶然发现 .
当我获得最新的TFS而其他项目在VS的多个实例中打开时,我遇到了这个问题 . 我已经有了上面的所有修复 . 重新打开VS修复了问题 .
在我的情况下,我登录到ftp服务器 . 在ftp服务器上备份当前文件 . 从ftp服务器手动删除所有文件 . 清洁解决方案,重新部署代码 . 有效 .