Tengo una solución ASP.NET Web Api que no contiene una clase Startup.cs. Supongo que esto se debe a que la solución no se creó como una solución MVC.
Todo el código para el inicio está definido en el archivo Global.asax.cs como puede ver a continuación
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); } }Sin embargo, ahora quiero tener soporte para OAuth y toda la documentación que encontré se basa en un Startup.cs con la siguiente clase
public partial class Startup { public void Configuration(IAppBuilder app) { ConfigureAuth(app); } }¿Es posible simplemente agregar esta nueva clase en mi solución y la solución seguirá funcionando?
¿Tendrá esto algún conflicto con la clase Global.asax.cs?
EDITAR : después de agregar la clase Startup.cs, no puedo alcanzar el punto de interrupción que agregué...
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); } } }¿Tienes idea de lo que está pasando?
Startup.cs es parte del paquete de autorización de OWIN. Si el paquete no se agrega a través de NuGet, no puedo garantizar que funcione. Sin embargo, a juzgar por esta respuesta, podría funcionar de todos modos dependiendo de su entorno.
https://stackoverflow.com/a/24678109/6442626
Respuesta corta: si instaló Microsoft.Owin.Security.OAuth desde NuGet, eso debería ser bueno. De lo contrario, debe instalarlo.
Actualización: para que MVC llame al método de configuración en el inicio, también debe instalar el paquete Microsoft.Owin.Host.SystemWeb de NuGet. No hay nada especial que deba cambiar con web.config, IIS detectará automáticamente el host Owin y lo cargará por usted.
Puede agregar su propia clase de inicio, pero debe asegurarse de que Owin la reconozca. Hay varias formas de hacer esto , pero si desea usar una clase de inicio, debe usar el atributo OwinStartup.
p.ej:
[assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]