C# 当我将控制器放入另一个项目OData.Net Core时,它不工作
我有两个项目:OData(ASP.Net核心API)和Console(.Net核心)。我将ASP.Net核心项目作为引用添加到控制台,并从控制台启动服务。我在控制台项目中创建了一个控制器类,但它不起作用。以下是我的项目结构: 我正在SimpleServer中启动OData服务:C# 当我将控制器放入另一个项目OData.Net Core时,它不工作,c#,asp.net-core,.net-core,controller,odata,C#,Asp.net Core,.net Core,Controller,Odata,我有两个项目:OData(ASP.Net核心API)和Console(.Net核心)。我将ASP.Net核心项目作为引用添加到控制台,并从控制台启动服务。我在控制台项目中创建了一个控制器类,但它不起作用。以下是我的项目结构: 我正在SimpleServer中启动OData服务: namespace SimpleServer { class Program { static void Main(string[] args) {
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;
}
}
}
下面的解决方案解决了此问题: 我制作了一个控制器项目作为类库,并添加了以下代码:
var modelAssembly = Assembly.LoadFrom(@"C:\Users\Owner\source\repos\ODataCoreTest\ClassLibrary2\bin\Debug\netcoreapp3.1\ClassLibrary2.dll");
services.AddControllers(mvcOptions =>
mvcOptions.EnableEndpointRouting = false).PartManager.ApplicationParts.Add(new AssemblyPart(modelAssembly));
现在它工作正常了你在使用多个启动项目吗?@Shivendra我不明白你的意思。我将oData项目作为一个类库,从几个方面开始,从项目图标上看,您的oData项目显然不是一个类库。这意味着AspNetCore applicationhost。它的目的是什么?@DIlshodK我相信示例服务器是作为类库创建的&oData项目是作为Web项目创建的。但是,这并不重要,如果希望运行示例服务器项目,则应该右键单击它并将其设置为启动项目。
var modelAssembly = Assembly.LoadFrom(@"C:\Users\Owner\source\repos\ODataCoreTest\ClassLibrary2\bin\Debug\netcoreapp3.1\ClassLibrary2.dll");
services.AddControllers(mvcOptions =>
mvcOptions.EnableEndpointRouting = false).PartManager.ApplicationParts.Add(new AssemblyPart(modelAssembly));