在ASP.Net Core中,我们通常通过在Startup.cs中调用AddMvc或AddControllers方法来注册控制器。然而,当我们使用子模块来组织我们的代码时,控制器的注册有些不同。
要注册子模块中的控制器,我们需要在模块中创建一个扩展方法,并在Startup.cs中调用这个扩展方法。这个扩展方法应该注册子模块中的控制器。
下面是一个示例。我们将文件存储在Core项目中,并从Web项目调用方法。
在Core项目中的Controllers文件夹中创建一个HomeController.cs文件:
using Microsoft.AspNetCore.Mvc;
namespace Core.Controllers
{
[Route("api/[controller]")]
public class HomeController : Controller
{
[HttpGet]
public IActionResult Get()
{
return Ok("Hello from home");
}
}
}
在Core项目中的MyAppExtensions文件夹中创建一个MyAppExtensions.cs文件:
using Microsoft.AspNetCore.Mvc;
namespace Core.MyAppExtensions
{
public static class MyAppExtensions
{
public static void AddMyAppControllers(this IMvcBuilder builder)
{
builder.AddApplicationPart(typeof(MyAppExtensions).Assembly)
.AddControllersAsServices()
.AddControllersAsServices();
}
}
}
在Web项目的Startup.cs文件中调用AddMyAppControllers方法:
using Core.MyAppExtensions;
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddMyAppControllers();
}
现在,我们已经成功地注册了子模块中的控制器,可以在Web项目中使用它们了。
上一篇:ASP.NETCore自动验证和检查用户名是否已被使用
下一篇:ASP.NETCore[Authorize]attributeallowingnon-autheduserstoloadapage