Base solution for your next web application
Starts in:
01 DAYS
01 HRS
01 MIN
01 SEC

Activities of "hozkar"

Finally, we found the problem!

In our controllers we inject the angular services proxies like this:

'abp.services.app.ubicacion'

But, after the update, the 'Service' suffix should not be removed, so the service should be called like this:

'abp.services.app.ubicacionService'

After that everything is working great.

Is this a bug or should we continue working like this?

Thanks.

Hi, thank you so much.

The response of my GetAll Contains all my services, here is an example of one service:

(function (abp, angular) {

    if (!angular) {
        return;
    }
    
    var abpModule = angular.module('abp');
    
    abpModule.factory('abp.services.app.ubicacionService', [
        '$http', function ($http) {
            return new function () {
                this.getPaises = function (httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/GetPaises',
                        method: 'POST',
                        data: JSON.stringify({})
                    }, httpParams));
                };
                
                this.getDepartamentos = function (paisInput, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/GetDepartamentos',
                        method: 'POST',
                        data: JSON.stringify(paisInput)
                    }, httpParams));
                };
                
                this.getLocalidades = function (departamentoInput, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/GetLocalidades',
                        method: 'POST',
                        data: JSON.stringify(departamentoInput)
                    }, httpParams));
                };
                
                this.savePais = function (nuevoPais, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/SavePais',
                        method: 'POST',
                        data: JSON.stringify(nuevoPais)
                    }, httpParams));
                };
                
                this.updatePais = function (paisUpdate, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/UpdatePais',
                        method: 'POST',
                        data: JSON.stringify(paisUpdate)
                    }, httpParams));
                };
                
                this.deletePais = function (paisEliminar, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/DeletePais',
                        method: 'POST',
                        data: JSON.stringify(paisEliminar)
                    }, httpParams));
                };
                
                this.saveDepartamento = function (nuevoDepartamento, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/SaveDepartamento',
                        method: 'POST',
                        data: JSON.stringify(nuevoDepartamento)
                    }, httpParams));
                };
                
                this.updateDepartamento = function (departamentoUpdate, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/UpdateDepartamento',
                        method: 'POST',
                        data: JSON.stringify(departamentoUpdate)
                    }, httpParams));
                };
                
                this.deleteDepartamento = function (departamentoEliminar, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/DeleteDepartamento',
                        method: 'POST',
                        data: JSON.stringify(departamentoEliminar)
                    }, httpParams));
                };
                
                this.saveLocalidad = function (nuevaLocalidad, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/SaveLocalidad',
                        method: 'POST',
                        data: JSON.stringify(nuevaLocalidad)
                    }, httpParams));
                };
                
                this.updateLocalidad = function (localidadUpdate, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/UpdateLocalidad',
                        method: 'POST',
                        data: JSON.stringify(localidadUpdate)
                    }, httpParams));
                };
                
                this.deleteLocalidad = function (localidadEliminar, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/DeleteLocalidad',
                        method: 'POST',
                        data: JSON.stringify(localidadEliminar)
                    }, httpParams));
                };
                
                this.getPaisIdAndDepartamentoIdByLocalidadId = function (localidad, httpParams) {
                    return $http(angular.extend({
                        url: abp.appPath + 'api/services/app/ubicacionService/GetPaisIdAndDepartamentoIdByLocalidadId',
                        method: 'POST',
                        data: JSON.stringify(localidad)
                    }, httpParams));
                };
                
            };
        }
    ]);


})((abp || (abp = {})), (angular || undefined));

And this is the error i'm getting in my webpage:

Error: $injector:unpr
Unknown Provider

Unknown provider: abp.services.app.ubicacionProvider <- abp.services.app.ubicacion <- tenant.views.zonificacion.localidad.localidad

I'm going to show you all my related code to this service:

IUbicacionService

public interface IUbicacionService : IApplicationService
    {
        GetPaisesOutput GetPaises();
         ...

UbicacionService:

public class UbicacionService : BowAppServiceBase, IUbicacionService
    {
            ...

html:

<div ng-controller="tenant.views.zonificacion.localidad.localidad as vm">
     <div class="row">
        <div class="col-md-12">
            <div class="portlet light bordered">
             ...

controller:

(function () {
    appModule.controller('tenant.views.zonificacion.localidad.localidad',
        ['$scope', '$timeout', 'abp.services.app.ubicacion',
        function ($scope, $timeout, ubicacionService) {
            var vm = this;

            $scope.$on('$viewContentLoaded', function () {
                App.initAjax();
            });

            ...

looking at the source code, abp.ng.js looks like is related with angular injection, and this file has changed since version 1.11.0 which is the version I started my project. Maybe something there is breaking my app?

Thanks in advance.

Hi!, thanks for your help.

Looking at the logs.txt, it looks like my app services are loading propertly:

DEBUG 2016-09-09 08:20:38,166 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.Authorization.Permissions.IPermissionAppService' with service name 'app/permission'.
DEBUG 2016-09-09 08:20:38,167 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.Auditing.IAuditLogAppService' with service name 'app/auditLog'.
DEBUG 2016-09-09 08:20:38,170 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Zonificacion.IZonificacionService' with service name 'app/zonificacionService'.
DEBUG 2016-09-09 08:20:38,172 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Zonificacion.Telefonos.ITelefonosService' with service name 'app/telefonosService'.
DEBUG 2016-09-09 08:20:38,174 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Zonificacion.Ubicacion.IUbicacionService' with service name 'app/ubicacionService'.
DEBUG 2016-09-09 08:20:38,175 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Zonificacion.Nomenclatura.INomenclaturaLocalidadService' with service name 'app/nomenclaturaLocalidadService'.
DEBUG 2016-09-09 08:20:38,177 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Zonificacion.Direcciones.IDireccionesService' with service name 'app/direccionesService'.
DEBUG 2016-09-09 08:20:38,178 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Servicios.RedFunerarias.IRedFunerariasService' with service name 'app/redFunerariasService'.
DEBUG 2016-09-09 08:20:38,180 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Servicios.Funerarias.IFunerariaService' with service name 'app/funerariaService'.
DEBUG 2016-09-09 08:20:38,181 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Servicios.FunerariaSedes.IFunerariaSedeService' with service name 'app/funerariaSedeService'.
DEBUG 2016-09-09 08:20:38,182 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Servicios.CriteriosCalificacion.ICriteriosCalificacionService' with service name 'app/criteriosCalificacionService'.
DEBUG 2016-09-09 08:20:38,184 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Servicios.Convenios.IConvenioService' with service name 'app/convenioService'.
DEBUG 2016-09-09 08:20:38,185 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Seguridad.ISeguridadService' with service name 'app/seguridadService'.
DEBUG 2016-09-09 08:20:38,187 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Personas.IPersonasService' with service name 'app/personasService'.
DEBUG 2016-09-09 08:20:38,189 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Personas.TiposDocumentos.ITiposDocumentosService' with service name 'app/tiposDocumentosService'.
DEBUG 2016-09-09 08:20:38,190 [1    ] Abp.Logging.LogHelper                    - Dynamic web api controller is created for type 'Bow.BowApplication.Personas.PreferenciasPersonales.IPreferenciasPersonalesService' with service name 'app/preferenciasPersonalesService'.

I decided to try if my web api is working, so I use Postman the way you explain in your documentation ([http://www.aspnetboilerplate.com/Pages/Documents/Zero/Startup-Template#authentication])) and all my app services were working; it is just my angular controllers that are unable to inject those propertly.

Thanks.

Hi, im being trying to upgrade my app and i'm always getting the same issue.

My app was working with no problems in version 1.11.0 (this was the base version i start working) , so i decide to start upgrading it based on all the changes you did in your master branch. Everything was ok until I have to upgrade the abp nuget packages.

In my first atempt, i upgrade my nuget packages to abp v1.11.0, did all the fixes required and when i run my app, my application services were not injected by angular, and I'm always getting the following error:

"Unknown provider: abp.services.app.ubicacionProvider <- abp.services.app.ubicacion <- tenant.views.zonificacion.localidad.localidad"

That happened in all my pages with all my application services, but if i use one of your application services it worked Ok.

I checked my app services and they all implement IApplicationService and extends form AppServiceBase, same as yours.

I decided to continue upgrading to ABP version 0.11.0.2; made the required fixes, but the same problem continue.

Finally, I decided to start all over with a clean working branch of version 1.11.0 of my app and just upgrade the ABP nuget packages to version 0.11.0.2 and made only the requiered fixes (breaking changes), but I got the same problem that my app services are not injected.

Any Ideas?

Thanks in advance.

Ok thank you so much, now it is working as an angular directive.

This is how I do it, maybe this could help someone:

  1. Create a new folder inside libs as bootstrap-confirmation and copy bootstrap-confirmation.min.js
  2. In ScriptPaths class, add the following const:
public const string Bootstrap_Confirmation = "~/libs/bootstrap-confirmation/bootstrap-confirmation.min.js";
  1. In AppBundleConfig class, add the new Boostrap_Confirmation url:
bundles.Add(
                new ScriptBundle("~/Bundles/App/libs/js")
                    .Include(
                        ScriptPaths.Json2,
                        ScriptPaths.JQuery,
                        ScriptPaths.JQuery_Migrate,
                        ScriptPaths.Bootstrap,
                        ...
                        ScriptPaths.Bootstrap_Confirmation,
                        ...

now, you can create an angular directive as you want:

(function () {
    appModule.directive('bowConfirmation', [
        function () {
            return {
                restrict: 'A',
                scope: {
                    bowConfirmationOptions: '=',
                    bowConfirmationOK: '&',
                    bowConfirmationCancel: '&',
                },
                link: function ($scope, element, attrs) {
                    $(element).attr('data-toggle', 'confirmation');
                    $(element).data($scope.bowConfirmationOptions);

                    //OK click
                    $(element).on("confirmed.bs.confirmation", function () {
                        $scope.bowConfirmationOK();
                    });
                    //Cancel click
                    $(element).on("canceled.bs.confirmation", function () {
                        $scope.bowConfirmationCancel();
                    });
                }
            };
        }
    ]);
})();

finally you can use your confirmation directive:

<button class="btn btn-default" bow-confirmation bow-confirmation-OK="vm.yes()" bow-confirmation-options='{"title": "New Title", "singleton": true}'>Confirmation</button>

Thanks.

Hi, I'm trying to create some popover confirmations in my app, but i am unable to use them.

[http://keenthemes.com/preview/metronic/theme/admin_4_material_design/ui_confirmations.html])

looking at the app.js file inside the metronic theme in my web project, it looks like there is something implemented:

// Handles Bootstrap confirmations
    var handleBootstrapConfirmation = function() {
        if (!$().confirmation) {
            return;
        }
        $('[data-toggle=confirmation]').confirmation({ btnOkClass: 'btn btn-sm btn-success', btnCancelClass: 'btn btn-sm btn-danger'});
    }

I try to use it like this:

<button class="btn btn-default" data-toggle="confirmation">Confirmation</button>

but nothing happens, I also try it these way:

<button class="btn btn-default" data-toggle="confirmation" ui-jq="confirmation">Confirmation</button>

And i receive the following error:

Error: ui-jq: The "confirmation" function does not exist.

Any help?

Thanks in advance.

Hi there,

I'm trying to update my aspnetboilerplate app but i'm getting always the same error when i get to version 0.10.0.0 and i don't know what else i can do.

After updating all the aspnetboilerplate nuget packages, downgrading my EntityFramework.DynamicFilters to v1.4.11 and updating my global.asax like this:

public class MvcApplication : AbpWebApplication<BowWebModule>
    {
        protected override void Application_Start(object sender, EventArgs e)
        {
            IocManager.Instance.IocContainer.AddFacility<LoggingFacility>(f => f.UseLog4Net().WithConfig("log4net.config"));
            base.Application_Start(sender, e);
        }
    }

my app builds correctly, but in execution i got the following error:

[MissingMethodException: No hay constructor sin parámetros definido para este objeto.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +206
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
   System.Activator.CreateInstance(Type type) +11
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +55

[InvalidOperationException: Error al intentar crear un controlador de tipo 'Bow.Web.Controllers.HomeController'. Asegúrese de que el controlador tenga un constructor público sin parámetros.]
   System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +178
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +76
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +88
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +194
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +50
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +103
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

It says that there is no constructor without parameters for this object; and looking at the stacktrace i think the problem is in my controllers, so I create a constructor to my HomeController without parameters (same for my AccountController).

After that I got the following error:

[NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.]
   Abp.Web.Mvc.Controllers.AbpController.SetCurrentMethodInfoAndWrapResultAttribute(ActionExecutingContext filterContext) in D:\Halil\GitHub\aspnetboilerplate\src\Abp.Web.Mvc\Web\Mvc\Controllers\AbpController.cs:301
   Abp.Web.Mvc.Controllers.AbpController.OnActionExecuting(ActionExecutingContext filterContext) in D:\Halil\GitHub\aspnetboilerplate\src\Abp.Web.Mvc\Web\Mvc\Controllers\AbpController.cs:288
   System.Web.Mvc.Controller.System.Web.Mvc.IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) +10
   System.Web.Mvc.Async.AsyncInvocationWithFilters.InvokeActionMethodFilterAsynchronouslyRecursive(Int32 filterIndex) +176
   System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__31(AsyncCallback asyncCallback, Object asyncState) +58
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters, AsyncCallback callback, Object state) +197
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState) +743
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +14
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +343
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +25
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +465
   System.Web.Mvc.Controller.<BeginExecute>b__14(AsyncCallback asyncCallback, Object callbackState, Controller controller) +18
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +20
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +374
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +16
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +52
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +30
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +128
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +384
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +48
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +16
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +103
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

Trying to solve this issue, i start to compare my project with a new template and i found a difference in my WebModule definition:

Mine:

[DependsOn(typeof(BowDataModule), typeof(BowApplicationModule), typeof(BowWebApiModule))]
    public class BowWebModule : AbpModule
    {
          ...
    }

aspnetboilerplate template:

[DependsOn(
        typeof(Update103DataModule),
        typeof(Update103ApplicationModule),
        typeof(Update103WebApiModule),
        typeof(AbpWebSignalRModule),
        //typeof(AbpHangfireModule), - ENABLE TO USE HANGFIRE INSTEAD OF DEFAULT JOB MANAGER
        typeof(AbpWebMvcModule))]
    public class Update103WebModule : AbpModule
    {
          ...
    }

So, i add

typeof(AbpWebMvcModule)

to my WebModule.

After that, my web app start to work! , but now after I login in any of my tenants, it is unable to bring any tenant data, and in my web browser console I get this error:

abp.timing is undefined

Any Ideas?

Thanks in advance!

Hi!

When i am going to insert a record, i need to define its tenantId.

At this moment, what i am doing is to query AbpSession in my Service to obtain the TenantId of the user; then asign it to the record and save it with the aproppiate repository.

Is this the recommended approach?

Thanks in advance.

Showing 21 to 28 of 28 entries