我收到此错误,因为我的项目无法找到 OWIN
启动类的参考。我什至通过 Nuget 安装了所有 OWIN 参考包,但仍然遇到同样的问题。我正在使用 Visual Studio 2012
和 MVC4
。
尝试加载应用程序时发生以下错误。
找不到包含 OwinStartupAttribute 的程序集。找不到包含 Startup 或 [AssemblyName].Startup 类的程序集。要禁用 OWIN 启动发现,请在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup。要指定 OWIN 启动程序集、类或方法,请在 web.config 中添加具有完全限定的启动类或配置方法名称的 appSetting owin:AppStartup。
Startup.cs
吗?
OwinStartupAttribute
?您的程序集是 Startup
还是 [AssemblyName].Startup
类?您是否通过在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup
禁用了 OWIN 启动发现?您是否做过其中一件事情并且想知道为什么它不起作用?你的问题是什么?
使用名称启动创建一个类这将帮助您..
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
在我们的项目中,我们不需要 OWIN 功能,因此我们从初始 ASP.NET MVC 模板项目中删除了所有 owin 引用。删除 OWIN 启动类后出现问题。
问题是我的 bin 文件夹中多余的 owin dll。当我删除它们时,问题就解决了。您应该通过删除 bin 文件夹来删除它们。 Clean Solution 不会删除这些 dll。
不知何故,当 OWIN dll 位于 bin 文件夹中时,IIS 仍会执行它们。
<add key="owin:AutomaticAppStartup" value="false"/>
添加为 appSetting。只是给尝试这个的人一些建议,但它仍然没有成功。
在 Visual Studio 2013 RC2 上,有一个模板。只需将其添加到 App_Start 文件夹。
https://i.stack.imgur.com/fN0lO.png
该模板产生这样一个类:
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
}
}
}
如果您不想使用 OWIN 启动,则应将以下内容添加到 web.config 文件中:
在 AppSettings 下添加以下行:
<add key="owin:AutomaticAppStartup" value="false" />
这就是它在 web.config 中的样子:
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
查看 Startup.cs
文件,您可能缺少其中一个。此文件是 OWIN 的入口点,因此听起来好像缺少此文件。请查看此处的 OWIN Startup class
以了解发生了什么。
正如您的错误所指出的,您可以通过执行以下操作在 web.config 中禁用它...
要禁用 OWIN 启动发现,请在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup
<add key="owin:AutomaticAppStartup" value="false" />
添加到 <appSettings>
组,不再需要 Startup.cs。
<add key="owin:AutomaticAppStartup" value="false" />
究竟会做什么?它会禁用任何功能吗?我们是否需要稍后启动应用程序才能使用任何 OWIN 功能?
首先,您必须创建启动文件,然后必须在 web.config 中指定此文件的语言环境,在 appSettings 标记中使用以下行:
<add key="owin:AppStartup" value="[NameSpace].Startup"/>
它解决了我的问题。
我遇到了这个问题,明白这不是 OP 的问题,但在我的情况下,我确实有一个 Startup 类,它只是默认没有找到它。
我的问题是我的程序集名称中有空格,因此默认名称空间与程序集名称不同,因此启动类的名称空间与程序集名称不同。
正如错误所暗示的那样,按照惯例,它会为类查找 [Assembly Name].Startup ... 所以请确保您的 Startup 类的命名空间与程序集名称相同。为我解决了这个问题。
我在这里尝试了大多数推荐的修复程序,但仍然无法避免错误消息。我最终执行了一些推荐的解决方案的组合:
将此条目添加到我的 web.config 的 AppSettings 部分的顶部:
然后我点击了 Run
并立即加载了我的主页。
就我而言,我重命名了项目并更改了它的文件夹结构。我发现在抛出错误的 .csproj 文件中更新 RootNameSpace 和 AssemblyName 可以解决该错误。如果您修改了项目的路径,我建议您也检查一下。
<RootNamespace>Company.Product.WebAPI</RootNamespace>
<AssemblyName>Company.Product.WebAPI</AssemblyName>
如果通过 IIS Express 运行并且您的虚拟目录未正确配置,也可能会出现此异常(即使您有正确配置的启动类)。
当我遇到这个问题时,解决方法是在项目属性的“Web”选项卡中按下“创建虚拟目录”按钮(使用 Visual Studio 2013)
我的情况?我有启动文件,但它被排除在项目中。我只是把它包括在内,错误就留下了。
您是真的想将 OWIN 添加到您的项目中,还是出乎意料?
如果你想添加 OWIN,添加一个 Startup 类是要走的路。如果您不需要对 Owin 的任何引用:从 /bin 文件夹中删除 Owin.dll。 Owin.dll 是一个试图识别 Startup 类的文件。
当您将 Azure AD 与 MVC 项目一起使用时,在 Visual Studio 2015 中也可能会遇到这种情况。在这里,它将启动文件创建为 App_Start 文件夹中的 Startup.Auth.cs,但它会丢失
[assembly: OwinStartup(typeof(MyWebApp.Startup))]
所以添加它,你应该很高兴。这发生在命名空间开始之前。
虽然我无法完全解释为什么这为我解决了这个问题,但在我将 API 项目更改为 build 以分隔 \debug
和 \release
文件夹后,我遇到了这样的问题。一旦我将该更改恢复为构建到单个 \bin
文件夹,事情就开始工作了。
我在这里写下我的经历:Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file
在尝试了 SignalR 然后将其从项目中删除后,我遇到了这个问题。为了解决这个问题,我必须删除远程服务器上站点的 bin 文件夹的内容,然后再次发布。
只需检查您的 packages.config
文件是否已签入(排除后,资源管理器中将显示一个红色的禁止进入符号)。由于某些奇怪的原因,我的被排除在外并导致了这个问题。
当我在 VS2013 中使用浏览器链接仪表板开始我的项目时,我一直收到同样的错误。但是,当我在调试模式下运行我的项目时,它会起作用。我不知道为什么以及如何让浏览器链接仪表板工作。我检查了启动文件,很好,添加了一些答案“”中描述的appSetting行,但没有任何效果。
显然,我做错了什么是点击浏览器仪表板中的错误链接。所有解决方案项目链接都显示在浏览器仪表板中,但只有启动项目链接有效。您需要单击启动项目的链接。
示例:我有 2 个项目,都显示在浏览器仪表板中,但只有标记为启动项目的项目才能工作(在解决方案资源管理器中显示为粗体。)我认为这可能有助于某人做显而易见的事情,我花了 2天偶然发现明显。
当我在 TFS 上获得最新版本,而其他项目在多个 VS 实例中打开时,我遇到了这个问题。我已经有了上面的所有修复。重新打开 VS 解决了这个问题。
就我而言,我登录了 ftp 服务器。备份 ftp 服务器上的当前文件。从 ftp 服务器手动删除所有文件。清洁解决方案,重新部署代码。有效。
<appSettings>
区域添加一个网络配置行,例如:<add key="owin:AppStartup" value="[NameSpace].Startup" />
[assembly:OwinStartupAttribute(typeof(Identity_Test.Startup))]
放入AssemblyInfo.cs
也可以。[assembly: OwinStartup(typeof([YourStartupNamespaceName].Startup))]