Base solution for your next web application

Activities of "statuscast"

Hi,

We are using the DotNetCore MVC/jQuery solution..

We find that having all our API calls only be accessible via the path domain.com/api/services/app/Component/Method very inconvenient for our customers. We also realize that as most the API calls are dynamically generated from our AppServices, we are kind of locked in to this.

Since the actual API set we want to expose is fairly small, what we would like to do as a work around, so our customers can simply access the api from domain.com/api/Component/Method is create a small WebApi proxy layer that literally acts as a 100% passthru to the subset of AppService Api calls. My question is 3 fold:

  1. what project do we implement this so that these WebAPI calls will be accessible within both the MVc and the Host proect

  2. How do we set a custom route for these calls? I can't seem to get custom routes working in any Abp or AspNetZero projects

  3. How do we ensure these calls are included in our Swagger UI?

Also, if there are already some example of custom non-AppService API's being exposed like this, I could probably figure this out, happy to be pointed to the right area if I'm just missing it...

thanks! jasen

Yes, I had seen that solution you suggested but didn't want to break the dynamic js api that is created so opted for a thin proxy layer. I will try this today, thank you.

Does anyone else experience a large number of exceptions during startup in AppNameCoreModule.cs:

line 109: IocManager.Resolve<ChatUserStateWatcher>().Initialize();

Exception thrown: 'System.ArgumentException' in System.Private.CoreLib.dll
System.ArgumentException: 'Null is not a valid constant value for this type.'

I'm trying to debug the MVC app startup time and just happened to notice this.. probably not related but figured it would be worth reporting.

Here's the stack trace. Unfortunately I had to use the Call Stack window, as the stack trace listed in the exception is showing only

System.ArgumentException HResult=0x80070057 Message=Null is not a valid constant value for this type. Source=System.Private.CoreLib StackTrace: at System.Reflection.Emit.TypeBuilder.SetConstantValue(ModuleBuilder module, Int32 tk, Type destType, Object value)

Here's the full Call Stack Window:

System.Private.CoreLib.dll!System.Reflection.Emit.TypeBuilder.SetConstantValue(System.Reflection.Emit.ModuleBuilder module, int tk, System.Type destType, object value)
Castle.Core.dll!Castle.DynamicProxy.Generators.Emitters.MethodEmitter.CopyDefaultValueConstant(System.Reflection.ParameterInfo from, System.Reflection.Emit.ParameterBuilder to)
Castle.Core.dll!Castle.DynamicProxy.Generators.Emitters.MethodEmitter.DefineParameters(System.Reflection.ParameterInfo[] parameters)
Castle.Core.dll!Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.CreateCallbackMethod(Castle.DynamicProxy.Generators.Emitters.ClassEmitter emitter, System.Reflection.MethodInfo methodInfo, System.Reflection.MethodInfo methodOnTarget)
Castle.Core.dll!Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.BuildInvocationType(Castle.DynamicProxy.Generators.MetaMethod method, Castle.DynamicProxy.Generators.Emitters.ClassEmitter class, Castle.DynamicProxy.ProxyGenerationOptions options)
Castle.Core.dll!Castle.DynamicProxy.Contributors.ClassProxyTargetContributor.GetMethodGenerator(Castle.DynamicProxy.Generators.MetaMethod method, Castle.DynamicProxy.Generators.Emitters.ClassEmitter class, Castle.DynamicProxy.ProxyGenerationOptions options, Castle.DynamicProxy.Contributors.OverrideMethodDelegate overrideMethod)
Castle.Core.dll!Castle.DynamicProxy.Contributors.CompositeTypeContributor.ImplementMethod(Castle.DynamicProxy.Generators.MetaMethod method, Castle.DynamicProxy.Generators.Emitters.ClassEmitter class, Castle.DynamicProxy.ProxyGenerationOptions options, Castle.DynamicProxy.Contributors.OverrideMethodDelegate overrideMethod)
Castle.Core.dll!Castle.DynamicProxy.Contributors.CompositeTypeContributor.Generate(Castle.DynamicProxy.Generators.Emitters.ClassEmitter class, Castle.DynamicProxy.ProxyGenerationOptions options)
Castle.Core.dll!Castle.DynamicProxy.Generators.ClassProxyGenerator.GenerateType(string name, System.Type[] interfaces, Castle.DynamicProxy.Generators.INamingScope namingScope)
Castle.Core.dll!Castle.DynamicProxy.Generators.BaseProxyGenerator.ObtainProxyType(Castle.DynamicProxy.Generators.CacheKey cacheKey, System.Func<string, Castle.DynamicProxy.Generators.INamingScope, System.Type> factory)
Castle.Core.dll!Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(System.Type classToProxy, System.Type[] additionalInterfacesToProxy, Castle.DynamicProxy.ProxyGenerationOptions options, object[] constructorArguments, Castle.DynamicProxy.IInterceptor[] interceptors)
Castle.Windsor.dll!Castle.Windsor.Proxy.DefaultProxyFactory.Create(Castle.MicroKernel.IKernel kernel, object target, Castle.Core.ComponentModel model, Castle.MicroKernel.Context.CreationContext context, object[] constructorArguments)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(Castle.MicroKernel.Context.CreationContext context, Castle.Core.ConstructorCandidate constructor, object[] arguments)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(Castle.MicroKernel.Context.CreationContext context, bool trackedExternally)
Castle.Windsor.MsDependencyInjection.dll!Castle.Windsor.MsDependencyInjection.MsScopedLifestyleManager.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.IReleasePolicy releasePolicy) Line 26
	at D:\Github\castle-windsor-ms-adapter\src\Castle.Windsor.MsDependencyInjection\MsScopedLifestyleManager.cs(26)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(Castle.MicroKernel.Context.CreationContext context, bool requiresDecommission, bool instanceRequired, out Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.Resolve(Castle.MicroKernel.Context.CreationContext context, bool instanceRequired)
Castle.Windsor.dll!Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.ISubDependencyResolver contextHandlerResolver, Castle.Core.ComponentModel model, Castle.Core.DependencyModel dependency)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(Castle.Core.ConstructorCandidate constructor, Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(Castle.MicroKernel.Context.CreationContext context, bool trackedExternally)
Castle.Windsor.MsDependencyInjection.dll!Castle.Windsor.MsDependencyInjection.MsScopedLifestyleManager.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.IReleasePolicy releasePolicy) Line 26
	at D:\Github\castle-windsor-ms-adapter\src\Castle.Windsor.MsDependencyInjection\MsScopedLifestyleManager.cs(26)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(Castle.MicroKernel.Context.CreationContext context, bool requiresDecommission, bool instanceRequired, out Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.Resolve(Castle.MicroKernel.Context.CreationContext context, bool instanceRequired)
Castle.Windsor.dll!Castle.MicroKernel.DefaultKernel.ResolveComponent(Castle.MicroKernel.IHandler handler, System.Type service, System.Collections.IDictionary additionalArguments, Castle.MicroKernel.IReleasePolicy policy)
Castle.Windsor.dll!Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(System.Type service, System.Collections.IDictionary arguments, Castle.MicroKernel.IReleasePolicy policy)
Castle.Windsor.MsDependencyInjection.dll!Castle.Windsor.MsDependencyInjection.ScopedWindsorServiceProvider.GetServiceInternal(System.Type serviceType, bool isOptional) Line 55
	at D:\Github\castle-windsor-ms-adapter\src\Castle.Windsor.MsDependencyInjection\ScopedWindsorServiceProvider.cs(55)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.FactoryMethodActivator<object>.Instantiate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(Castle.MicroKernel.Context.CreationContext context, bool trackedExternally)
Castle.Windsor.MsDependencyInjection.dll!Castle.Windsor.MsDependencyInjection.MsScopedLifestyleManager.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.IReleasePolicy releasePolicy) Line 26
	at D:\Github\castle-windsor-ms-adapter\src\Castle.Windsor.MsDependencyInjection\MsScopedLifestyleManager.cs(26)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(Castle.MicroKernel.Context.CreationContext context, bool requiresDecommission, bool instanceRequired, out Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.Resolve(Castle.MicroKernel.Context.CreationContext context, bool instanceRequired)
Castle.Windsor.dll!Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.ISubDependencyResolver contextHandlerResolver, Castle.Core.ComponentModel model, Castle.Core.DependencyModel dependency)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(Castle.Core.ConstructorCandidate constructor, Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(Castle.MicroKernel.Context.CreationContext context, bool trackedExternally)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.IReleasePolicy releasePolicy)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(Castle.MicroKernel.Context.CreationContext context, bool requiresDecommission, bool instanceRequired, out Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.Resolve(Castle.MicroKernel.Context.CreationContext context, bool instanceRequired)
Castle.Windsor.dll!Castle.MicroKernel.Resolvers.DefaultDependencyResolver.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.ISubDependencyResolver contextHandlerResolver, Castle.Core.ComponentModel model, Castle.Core.DependencyModel dependency)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateConstructorArguments(Castle.Core.ConstructorCandidate constructor, Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.Instantiate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(Castle.MicroKernel.Context.CreationContext context)
Castle.Windsor.dll!Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.CreateInstance(Castle.MicroKernel.Context.CreationContext context, bool trackedExternally)
Castle.Windsor.dll!Castle.MicroKernel.Lifestyle.SingletonLifestyleManager.Resolve(Castle.MicroKernel.Context.CreationContext context, Castle.MicroKernel.IReleasePolicy releasePolicy)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(Castle.MicroKernel.Context.CreationContext context, bool requiresDecommission, bool instanceRequired, out Castle.MicroKernel.Burden burden)
Castle.Windsor.dll!Castle.MicroKernel.Handlers.DefaultHandler.Resolve(Castle.MicroKernel.Context.CreationContext context, bool instanceRequired)
Castle.Windsor.dll!Castle.MicroKernel.DefaultKernel.ResolveComponent(Castle.MicroKernel.IHandler handler, System.Type service, System.Collections.IDictionary additionalArguments, Castle.MicroKernel.IReleasePolicy policy)
Castle.Windsor.dll!Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(System.Type service, System.Collections.IDictionary arguments, Castle.MicroKernel.IReleasePolicy policy)
Castle.Windsor.dll!Castle.Windsor.WindsorContainer.Resolve<StatusCast.Friendships.ChatUserStateWatcher>()
StatusCast.Core.dll!StatusCast.StatusCastCoreModule.PostInitialize() Line 109
	at C:\src\statuscast\server.v3\src\StatusCast.Core\StatusCastCoreModule.cs(109)
System.Private.CoreLib.dll!System.Collections.Generic.List<Abp.Modules.AbpModuleInfo>.ForEach(System.Action<Abp.Modules.AbpModuleInfo> action)
Abp.dll!Abp.AbpBootstrapper.Initialize() Line 155
	at D:\Github\aspnetboilerplate\src\Abp\AbpBootstrapper.cs(155)
Abp.AspNetCore.dll!Abp.AspNetCore.AbpApplicationBuilderExtensions.InitializeAbp(Microsoft.AspNetCore.Builder.IApplicationBuilder app) Line 67
	at D:\Github\aspnetboilerplate\src\Abp.AspNetCore\AspNetCore\AbpApplicationBuilderExtensions.cs(67)
Abp.AspNetCore.dll!Abp.AspNetCore.AbpApplicationBuilderExtensions.UseAbp(Microsoft.AspNetCore.Builder.IApplicationBuilder app, System.Action<Abp.AspNetCore.AbpApplicationBuilderOptions> optionsAction) Line 38
	at D:\Github\aspnetboilerplate\src\Abp.AspNetCore\AspNetCore\AbpApplicationBuilderExtensions.cs(38)
StatusCast.Web.Mvc.dll!StatusCast.Web.Startup.Startup.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder app, Microsoft.AspNetCore.Hosting.IHostingEnvironment env, Microsoft.Extensions.Logging.ILoggerFactory loggerFactory) Line 171
	at C:\src\statuscast\server.v3\src\StatusCast.Web.Mvc\Startup\Startup.cs(171)
[Native to Managed Transition]
[Managed to Native Transition]
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.ConfigureBuilder.Invoke(object instance, Microsoft.AspNetCore.Builder.IApplicationBuilder builder)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder app)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.WebHost.StartAsync(System.Threading.CancellationToken cancellationToken)
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Hosting.Internal.WebHost.<StartAsync>d__26>(ref Microsoft.AspNetCore.Hosting.Internal.WebHost.<StartAsync>d__26 stateMachine)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.Internal.WebHost.StartAsync(System.Threading.CancellationToken cancellationToken)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(Microsoft.AspNetCore.Hosting.IWebHost host, System.Threading.CancellationToken token, string shutdownMessage)
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__5>(ref Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__5 stateMachine)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(Microsoft.AspNetCore.Hosting.IWebHost host, System.Threading.CancellationToken token, string shutdownMessage)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(Microsoft.AspNetCore.Hosting.IWebHost host, System.Threading.CancellationToken token)
System.Private.CoreLib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__4>(ref Microsoft.AspNetCore.Hosting.WebHostExtensions.<RunAsync>d__4 stateMachine)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(Microsoft.AspNetCore.Hosting.IWebHost host, System.Threading.CancellationToken token)
Microsoft.AspNetCore.Hosting.dll!Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(Microsoft.AspNetCore.Hosting.IWebHost host)
StatusCast.Web.Mvc.dll!StatusCast.Web.Startup.Program.Main(string[] args) Line 10
	at C:\src\statuscast\server.v3\src\StatusCast.Web.Mvc\Startup\Program.cs(10)
public override void PostInitialize()
        {
            IocManager.RegisterIfNot<IChatCommunicator, NullChatCommunicator>();

            var x = IocManager.Resolve<ChatUserStateWatcher>();
            x.Initialize();
            IocManager.Resolve<AppTimes>().StartupTime = Clock.Now;
        }

It's happening on the .Resolve<ChatUserStateWatcher>()
The app just rushes right past it, so it's not a "problem" per se. Just doesn't look right.

Sorry for a second post but I'm trying to work through these startup exceptions. I get this during startup of a freshly downloaded copy of the DotNetCore jQuery+MVC app when running the Web.MVC project.

Am I the only one getting these? I haven't updated any packages (which I thought may have been the issue with my previous post -- it wasn't)

Exception thrown: 'Castle.MicroKernel.CircularDependencyException' in Castle.Windsor.dll Dependency cycle has been detected when trying to resolve component 'Microsoft.AspNetCore.Razor.Language.RazorProjectEngine_342f322e-12a2-43fa-bd2c-b3d7a11fea5b'. The resolution tree that resulted in the cycle is the following: Component 'Microsoft.AspNetCore.Razor.Language.RazorProjectEngine_342f322e-12a2-43fa-bd2c-b3d7a11fea5b' resolved as dependency of component 'Microsoft.AspNetCore.Razor.Language.RazorEngine_84465d71-0335-4164-9caa-a7b1825160ce' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Razor.Internal.LazyMetadataReferenceFeature_fadeed8d-908f-4f1a-929e-671e0fac0468' resolved as dependency of component 'Microsoft.AspNetCore.Razor.Language.RazorProjectEngine_342f322e-12a2-43fa-bd2c-b3d7a11fea5b' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Razor.Compilation.IViewCompilerProvider_b4901d29-7df1-4715-a1a4-3a3e6614f9c4' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Razor.IRazorPageFactoryProvider_41441bd0-e3c9-4ab3-9194-b43dbf35817b' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Razor.IRazorViewEngine_77e94e9f-46af-4866-bb10-767d8ccd0218' resolved as dependency of component 'Microsoft.Extensions.Options.IConfigureOptions1[[Microsoft.AspNetCore.Mvc.MvcViewOptions, Microsoft.AspNetCore.Mvc.ViewFeatures, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60]]_5aae7c05-6172-497b-9d95-463f42a3f065' resolved as dependency of component 'Microsoft.Extensions.Options.IOptionsFactory1_845669a6-a7eb-4e97-89c9-e07cc667f74c' resolved as dependency of component 'Microsoft.Extensions.Options.IOptionsFactory1_845669a6-a7eb-4e97-89c9-e07cc667f74c' resolved as dependency of component 'Microsoft.Extensions.Options.IOptions1_9314a2d7-cc59-44a6-937c-0ec01e523717' resolved as dependency of component 'Microsoft.Extensions.Options.IOptions`1_9314a2d7-cc59-44a6-937c-0ec01e523717' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.ApplicationModels.IPageApplicationModelProvider_b29b5f53-be79-469c-91cb-30a963369e9d' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.RazorPages.Infrastructure.IPageLoader_ffd49a92-ac4c-455b-812b-b319374e8df2' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Abstractions.IActionInvokerProvider_adecbe20-f382-4dfd-8c1e-d5a534c872d7' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Infrastructure.IActionInvokerFactory_1aa4e594-8f55-43fa-a5c8-2d1501735feb' resolved as dependency of component 'Microsoft.AspNetCore.Mvc.Internal.MvcRouteHandler_6ba755e4-c2c4-42f6-a842-398731985a14' which is the root component being resolved.

take care, jasen

Is this exception related to this: https://github.com/aspnetboilerplate/aspnetboilerplate/issues/3569

is so, just ignore?

I mentioned in e-mail I couldn't respond here until my password was reset, sorry it was still considered abandoned.

The Route decorator worked fine as expected. We ended up using Swashbuckle and API versioning to give us a limited swagger file that we could publish as our API docs. So we have a "full" and "public" API now. The full is all inclusive and still includes all the ABP/AZ stuff. The "public" one is only showing API's that are decorated with GroupName="" We still unfortunately have to proxy out all our public API's that are dynamically generated, but it's not a huge deal. So, our proxy API looks something like this now:

[ApiExplorerSettings(GroupName = "public")]
[Route("/api/Components")]
public  class ComponentsController : StatusCastControllerBase
{
        private readonly IComponentsAppService _componentsAppService;
        public ComponentsController(IComponentsAppService componentAppService)
        {
            _componentsAppService = componentAppService;
        }
        
		[HttpGet]
        [RemoteService(IsMetadataEnabled = true)]
        [Route("GetAll")]
        public async Task<PagedResultDto<Components.Dtos.GetComponentForView>> GetAll(Components.Dtos.GetAllComponentsInput input)
        {
            return await _componentsAppService.GetAll(input);
        }
}

we actually already are upgraded to 3.8.2

I'll try blowing away bin and obj files again today.

will try today.

Showing 1 to 10 of 52 entries