我有一个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);
}
}
}
知道发生了什么事吗?
答案 0 :(得分:26)
答案 1 :(得分:22)
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主机并为您加载。
答案 2 :(得分:5)
您可以添加自己的启动类,但需要确保Owin正在识别它。 There are several ways to do this ,但如果您想使用Startup类,则需要使用OwinStartup属性。
例如:
[assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]
答案 3 :(得分:2)
直到我在Web.config上删除此行(在根文件夹中)后,我的Startup.cs才会运行
<add key="owin:AutomaticAppStartup" value="false" />
答案 4 :(得分:-1)
是的。首先,您需要从web.config
中删除以下行。
<add key="owin:AutomaticAppStartup" value="false" />
只有这样,它才会调用方法startup.cs
。