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