[英]ASP.NET core web api returns 404 when Startup.cs in different assembly
[英]ASP.NET Web Api - Startup.cs doesn't exist
我有一个不包含 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);
}
}
}
知道发生了什么吗?
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 主机并为您加载它。
您可以添加自己的启动类,但您需要确保 Owin 能够识别它。 有几种方法可以做到这一点,但如果您想使用 Startup 类,那么您需要使用 OwinStartup 属性。
例如:
[assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]
在删除 Web.config 上的这一行(在根文件夹中)之前,我的 Startup.cs 不会运行
<add key="owin:AutomaticAppStartup" value="false" />
是的。 首先,您需要从web.config
删除以下行。
<add key="owin:AutomaticAppStartup" value="false" />
只有这样它才会调用它startup.cs
的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.