【问题标题】:ASP.NET Web Api - Startup.cs doesn't existASP.NET Web Api - Startup.cs 不存在
【发布时间】:2017-08-21 21:59:33
【问题描述】:

我有一个不包含 Startup.cs 类的 ASP.NET Web Api 解决方案。我认为这是因为该解决方案不是作为 MVC 解决方案创建的。

启动的所有代码都在 Global.asax.cs 文件中定义,如下所示

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

但是,现在我想要支持 OAuth,并且我发现的所有文档都基于具有以下类的 Startup.cs

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}

是否可以在我的解决方案中添加这个新类并且解决方案将继续工作?

这会和 Global.asax.cs 类有冲突吗?

编辑:在我添加了 Startup.cs 类之后,我无法命中我添加到其中的断点...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;

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

namespace MyGame
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

知道发生了什么吗?

【问题讨论】:

  • 确保你在启动类上面添加了[assembly: OwinStartup(typeof(AuthorizationServer.Startup))]这个
  • 我添加了它,但在我运行应用程序时仍然没有命中断点。
  • @user3587624 我有同样的问题 - 你解决了吗?
  • 当我在我的解决方案中添加对 Microsoft.Owin.Host.SystemWeb 的引用时,我的问题消失了。
  • 这能回答你的问题吗? OWIN Startup Class Missing

标签: c# asp.net .net asp.net-mvc asp.net-mvc-4


【解决方案1】:

如果你已经安装了 Owin 包,你可以简单地创建启动类:

【讨论】:

  • 这是 VS 2015 的正确答案 - 它将为您生成所有必要的代码。
  • 确保您已安装 Microsoft.Owin.Host.SystemWeb nuget pkg。否则将无法正常工作
【解决方案2】:

Startup.cs 是 OWIN 授权包的一部分。如果包不是通过 NuGet 添加的,我不能保证它会起作用。但是,从这个答案来看,它可能仍然有效,具体取决于您的环境。

https://stackoverflow.com/a/24678109/6442626

简答:如果您从 NuGet 安装 Microsoft.Owin.Security.OAuth,那应该很好。否则,您需要安装它。

更新: 为了让 MVC 在启动时调用 Configuration 方法,您还需要从 NuGet 安装 Microsoft.Owin.Host.SystemWeb 包。使用 web.config 没有什么特别需要更改的,IIS 会自动检测 Owin 主机并为您加载它。

【讨论】:

  • 实际上,我添加了 Startup.cs 和 Startup.Auth.cs 并且它根本没有在 ConfigurAuth(app) 行中中断。我在命名空间上方添加了 assemble ([assembly: OwinStartup(typeof(MyGames.Startup))]) ...有什么想法吗?
  • 你是从 NuGet 安装包吗?
  • 我做到了。我已经安装了这个: 还有很多其他的,比如 Jwt、Active Directory 等......
  • web.config 的 下是否有 ?
  • 只是在这里添加对 Microsoft.Owin.Host.SystemWeb 的引用后问题消失了
【解决方案3】:

您可以添加自己的启动类,但需要确保 Owin 能够识别它。 There are several ways to do this ,但如果您想使用 Startup 类,则需要使用 OwinStartup 属性。

例如:

[assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]

【讨论】:

  • 我遇到了未重新编译 DLL 的问题。尝试从 Temporary ASP.Net 文件中删除内容(通常在“Appdata/Local/Temp/Temporary ASP.NET Files”中),然后删除项目的 bin 和 obj 文件夹以强制重新编译所有内容。
  • 在这种情况下,添加 Microsoft.Owin.Host.SystemWeb 后问题就消失了
【解决方案4】:

我的 Startup.cs 将无法运行,直到我在 Web.config(在根文件夹中)删除此行

<add key="owin:AutomaticAppStartup" value="false" /> 

【讨论】:

  • 谢谢。花了一整天试图解决这个问题,这就是答案。
【解决方案5】:

是的。首先,您需要从 web.config 中删除以下行。

<add key="owin:AutomaticAppStartup" value="false" />

只有这样它才会调用它startup.cs的方法。

【讨论】:

  • 这看起来有点像一个老问题的非答案。
  • @Jason 由于缺少格式,实际代码被隐藏了。
猜你喜欢
  • 2019-08-07
  • 1970-01-01
  • 2021-05-25
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多