【发布时间】:2020-07-08 06:34:39
【问题描述】:
我有两个项目:OData (ASP.Net Core API) 和 Console(.Net core)。我将 ASP.Net Core 项目添加到 Console 作为参考并从 Console 启动服务。我在控制台项目中创建了一个控制器类,但它不起作用。这是我的项目结构:
我正在 SimpleServer 中启动 OData 服务:
namespace SimpleServer
{
class Program
{
static void Main(string[] args)
{
var url = "https://localhost:44383";
var actionBuilder = Configuration.GetBuilder();
StartHost(url, actionBuilder);
}
internal static IHost StartHost(string url, Action<IApplicationBuilder> action)
{
var host = Host.CreateDefaultBuilder().ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseIISIntegration();
webBuilder.UseStartup<Startup>();
webBuilder.UseHttpSys(op => op.UrlPrefixes.Add(url));
webBuilder.Configure(action);
}).Build();
host.Start();
return host;
}
}
}
但是当我转到 https://localhost:44383/odata/Student 时它显示 404 错误
当我将 StudentController 类移动到 OData 项目时,它正在工作。我想将控制器类放在另一个应用程序(我的控制台应用程序)中,我该怎么做?这是控制器类:
public class StudentController : BaseController<Student>
{
}
public class BaseController<TEntity> : ODataController where TEntity : class
{
[HttpGet]
[EnableQuery()]
public IActionResult Get(ODataQueryOptions<TEntity> queryOptions, CancellationToken cancellationToken)
{
var list = new List<Student>
{
CreateNewStudent("Cody Allen", 130),
CreateNewStudent("Todd Ostermeier", 160),
CreateNewStudent("Viral Pandya", 140)
};
return Ok(list);
}
private static Student CreateNewStudent(string name, int score)
{
return new Student
{
Id = Guid.NewGuid(),
Name = name,
Score = score
};
}
}
【问题讨论】:
-
您是否在使用多个启动项目?
-
@Shivendra 我不明白你的意思。我将 oData 项目作为类库并从几个 vays 开始
-
从项目图标来看,您的 OData 项目显然不是类库。这意味着 AspNetCore 应用程序主机。
-
这样做的目的是什么?
-
@DIlshodK 我相信示例服务器是作为类库创建的,而 oData 项目是作为 Web 项目创建的。不过没关系,如果你想运行示例服务器项目,你应该右键单击它并将其设置为启动项目。
标签: c# asp.net-core .net-core controller odata