简体   繁体   中英

AspNet boilerplate - AspNetZero - dependency injection

I have the following classes and I am trying to implement Dependency Injection into calling a WCF Service in ASP.NET Zero.

Interface IUserProxyService implements IApplicationService with CreateUser method.

Class UserProxyService implments IUserProxyService with construction injection of IUserRepository and has a CreateUser Method.

Interface IUserRepository specifies to implement CreateUser method.

Class UserRespository implments IUserRepository with public constructor without parmaters intiates a call to the WCF Service Client and another constructor for mocking. This class contains the actual call to the WCF Service.

By Using IApplicationService, according to the documentation my class is automatically registered by CastleWindsor in ASPNetZero. Now, in UserAppService class in Authorisation.User(Application project). I am adding IUserProxyService as an additional parameter to my constructor. So that I can use that object to make createuser calls.

However, after doing this, when I load the Users section on the web application I am getting a javascript error:

 _Header.js:74 Uncaught TypeError: Cannot read property 'app' of undefined
 at HTMLDocument.<anonymous> (_Header.js:74)
 at i (jquery.min.js:2)
 at Object.fireWith [as resolveWith] (jquery.min.js:2)
 at Function.ready (jquery.min.js:2)
 at HTMLDocument.K (jquery.min.js:2)

In Header.js:

 //Manage linked accounts
 var _userLinkService = abp.services.app.userLink; - erroring line

What am I doing wrong? Can you guide me in the right direction? Reply

I Have same Problem. check this items maybe correct this error.

1- AssetApplicationService must be implemented by IApplicationService .

 public interface IAssetApplicationService  : IApplicationService
 {   

 }
public class AssetApplicationService : IAssetApplicationService  
{   

}

2-check your module load correctly and add correct dependencies in other modules like this.

    using System.Reflection;
    using System.Web.Http;
    using Abp.Application.Services;
    using Abp.Configuration.Startup;
    using Abp.Modules;
    using Abp.WebApi;

    namespace YourApp.Api
    {
        [DependsOn(typeof(AbpWebApiModule), 
        typeof(YourAppCommonModule), 
        typeof(YourAppApplicationModule))]
        public class YourAppWebApiModule : AbpModule
        {
            public override void Initialize()
            {
                IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());

                Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
                    .ForAll<IApplicationService>(typeof(YourAppCommonModule).Assembly, "app")
                    .Build();

                Configuration.Modules.AbpWebApi().DynamicApiControllerBuilder
                    .ForAll<IApplicationService>(typeof(YourAppApplicationModule).Assembly, "app")
                    .Build();

                Configuration.Modules.AbpWebApi().HttpConfiguration.Filters.Add(new HostAuthenticationFilter("Bearer"));
            }
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM