ASP.NET Web Api - Startup.cs не существует

У меня есть решение ASP.NET Web Api, которое не содержит класс Startup.cs. Я предполагаю, что это потому, что решение не было создано как решение 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);
        }
    }
}

Есть идеи, что происходит?

Ответ 1

Startup.cs является частью пакета авторизации OWIN. Если пакет не добавлен через NuGet, я не могу гарантировать, что он сработает. Однако, судя по этому ответу, он может работать в любом случае в зависимости от вашей среды.

fooobar.com/questions/32191/...

Короткий ответ: если вы установили Microsoft.Owin.Security.OAuth из NuGet, это должно быть хорошо. В противном случае вам необходимо установить его.

Обновление: Чтобы MVC вызывал метод конфигурации при запуске, вам также необходимо установить пакет Microsoft.Owin.Host.SystemWeb из NuGet. Нет ничего особенного, что вам нужно изменить с помощью web.config, IIS автоматически обнаружит хост Owin и загрузит его для вас.

Ответ 2

Если вы установили пакеты Owin, вы можете просто создать класс запуска с помощью:

enter image description here

Ответ 3

Вы можете добавить свой собственный класс запуска, но вам нужно убедиться, что Оуэн распознает его. Есть несколько способов сделать это, но если вы хотите использовать класс Startup, вам нужно использовать атрибут OwinStartup.

например:

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

Ответ 4

Мой файл Startup.cs не будет работать, пока я не удалю эту строку в файле Web.config (в корневой папке)

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

Ответ 5

Да. сначала вам нужно удалить следующую строку из вашего web.config.

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

Только тогда он будет вызывать метод, который он startup.cs.