关于c#:OWIN Startup Class Missing

OWIN Startup Class Missing

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

尝试加载应用程序时出现以下错误。

0


创建一个名为startup的类,这将帮助您..

1
2
3
4
5
6
7
public class Startup
{
   public void Configuration(IAppBuilder app)
   {
      app.MapSignalR();
   }
}


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

问题是我的bin文件夹中有多余的owin dll。当我删除它们时,问题就解决了。您应该通过删除bin文件夹来删除它们。清除解决方案不会删除这些DLL。

不知何故,当owin dll在bin文件夹中时,IIS仍会执行它们。


在Visual Studio 2013 RC2上,有一个用于此的模板。只需将其添加到app_start文件夹。

enter image description here

模板生成这样的类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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下添加以下行:

2

在web.config中应该是这样的:

1
  </appSettings>


找一找Startup.cs文件,可能丢失了其中一个。此文件是OWIN的入口点,因此似乎缺少此文件。看看这里的OWIN Startup class,了解发生了什么。

按照您的错误指定,您可以通过执行以下操作在web.config中禁用此功能…

0


首先,必须创建启动文件,然后必须在web.config中指定此文件的区域设置,并在appsettings标记内使用此行:

它解决了我的问题。


我有这个问题,明白这不是OP的问题所在,但在我的例子中,我确实有一个启动类,它在默认情况下并没有找到它。

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

如错误所示,按照惯例,它查找[程序集名称]。类的启动…因此,请确保启动类的命名空间与程序集名称相同。帮我解决了这个问题。


我在这里尝试了大多数推荐的修复方法,但仍然无法避免错误消息。最后,我结合了一些推荐的解决方案:

  • 将此条目添加到my web.config的AppSettings部分的顶部:

  • 扩展了我的项目的引用节点,删除了包含字符串OWIN的所有内容。(我觉得这样做是安全的,因为我的组织将来不是(也不会是)一个活跃的OWIN提供者)

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


    我的案子?我有启动文件,但它被排除在项目中。我刚刚把它包括在内,还有错误。


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

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


    在Visual Studio 2015中,当您将Azure广告与MVC项目一起使用时,也可能会遇到这种情况。在这里,它将启动文件创建为app_start文件夹中的startup.auth.cs,但它将丢失

    1
    [assembly: OwinStartup(typeof(D_ToolsWebApp.Startup))]

    所以,加上它,你就可以走了。这将在命名空间启动之前进行。


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

    当我遇到这个问题时,解决方法就是简单地按项目属性的"Web"选项卡中的"创建虚拟目录"按钮(使用Visual Studio 2013)


    我在试用了信号器,然后将其从项目中移除后,遇到了这个问题。为了解决这个问题,我必须删除远程服务器上站点的bin文件夹的内容,然后重新发布。


    您是真的要将owin添加到您的项目中,还是这是意外的?

  • 如果您想添加owin,那么添加一个startup类就可以了。

  • 如果您不需要任何对OWIN的引用:

    从/bin文件夹中删除owin.dll。

    owin.dll是试图标识启动类的。


  • 只需检查您的packages.config文件是否已签入(排除后,资源管理器中将显示一个红色的无条目符号)。出于某种奇怪的原因,我的被排除在外并引起了这个问题。


    虽然我不能完全解释为什么这解决了我的问题,但在我把API项目改成单独的\debug
    elease
    文件夹后,我遇到了这样的问题。一旦我恢复到构建一个单独的\bin文件夹,事情就开始工作了。

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


    当我在VS2013中使用浏览器链接仪表板开始我的项目时,我一直遇到同样的错误。但是,当我以调试模式运行我的项目时,它会工作。我不知道为什么以及如何让浏览器链接仪表板工作。我检查了启动文件,它很好,添加了一些答案中描述的应用程序设置行",但没有任何效果。

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

    示例:我有两个项目,都显示在浏览器仪表板中,但只有一个标记为启动项目的项目可以工作(在解决方案资源管理器中显示为粗体)。我认为这可能有助于完成显而易见的任务,我花了2天时间偶然发现了显而易见的任务。


    当我得到关于tfs的最新消息,而其他项目在vs的多个实例中打开时,我遇到了这个问题。我已经得到了上面所有的修复。重新打开vs修复了问题。


    在我的例子中,我登录了ftp服务器。在ftp服务器上备份当前文件。从ftp服务器手动删除所有文件。清除解决方案,重新部署代码。它奏效了。