ASP NET 样板 - 如何 override/redirect 调用 App Service?
ASPNET Boilerpate - How to override/redirect calls to App Service?
我有两个 AppService,TestAppService 和 Test2AppService。我希望将对 Test 的调用重定向到 Test2,例如:
http://localhost:21021/api/services/app/Test/GetAll
应该给我
的结果
http://localhost:21021/api/services/app/Test2/GetAll
但是我无法编辑 TestAppService。
目前我的解决方法是在模块初始化期间重命名控制器:
.ConfigureControllerModel(model =>
{
if (model.ControllerName == "Test")
model.ControllerName = "Test2";
// Need to rename Test2 or it would be ambiguous
else if (model.ControllerName == "Test2")
model.ControllerName = "Test";
});
是否有 better/simpler 方法来做到这一点?我实际上只需要重定向一种方法。
假设您使用的是 AspNetCore。
您可以使用 [RemoteService(false)]
禁用 TestAppService,请参阅 https://aspnetboilerplate.com/Pages/Documents/AspNet-Core#application-services-as-controllers
然后将 [Route("api/test/[action]")]
之类的路由属性添加到您的 Test2AppService
能够使用 Order = -1 的 HttpGet 属性做到这一点:
[HttpGet("api/services/app/Test/GetAll", Order = -1)]
public async override Task<List<Data>> GetAll()
我有两个 AppService,TestAppService 和 Test2AppService。我希望将对 Test 的调用重定向到 Test2,例如:
http://localhost:21021/api/services/app/Test/GetAll
应该给我
的结果http://localhost:21021/api/services/app/Test2/GetAll
但是我无法编辑 TestAppService。
目前我的解决方法是在模块初始化期间重命名控制器:
.ConfigureControllerModel(model =>
{
if (model.ControllerName == "Test")
model.ControllerName = "Test2";
// Need to rename Test2 or it would be ambiguous
else if (model.ControllerName == "Test2")
model.ControllerName = "Test";
});
是否有 better/simpler 方法来做到这一点?我实际上只需要重定向一种方法。
假设您使用的是 AspNetCore。
您可以使用 [RemoteService(false)]
禁用 TestAppService,请参阅 https://aspnetboilerplate.com/Pages/Documents/AspNet-Core#application-services-as-controllers
然后将 [Route("api/test/[action]")]
之类的路由属性添加到您的 Test2AppService
能够使用 Order = -1 的 HttpGet 属性做到这一点:
[HttpGet("api/services/app/Test/GetAll", Order = -1)]
public async override Task<List<Data>> GetAll()