1

I was wondering if some one can help here. I have a project as a general which includes 5 layout. Now I'm trying to write api with dotnet core which use data access and commone Lay out of this general. so I added these 2 dll as assembly reference(they are using dotnet framwork) and in my api I call their classes:

[HttpPost("login")]
        public IActionResult login(LoginDto user)
        {

            General.Common.cLoadUserPermission.stcLoginInfo _LI = new cLoadUserPermission.stcLoginInfo();

            if (user.UserName.ToLower() == "adminy" && user.Password.ToLower()== "rddddlad91")
            {
                _LI.LoginError = enmLoginError.enmLoginError_NoError;
                _LI.UserID = "d56d79f4-1f06-4462-9ed7-d4292322555d";
                _LI.UserName = "مدير سيستم";
                _LI.UserLoginName = "adminy";
                _LI.PersonelID = Guid.Empty;
                _LI.IsSupervisor = false;
                GlobalItems.CurrentUserID = _LI.UserID;
                GlobalItems.CurrentUserPLE = _LI.UserLoginName;
                GlobalItems.CurrentUserName = _LI.UserName;
            }
            else
            {
                _LI.LoginError = enmLoginError.enmLoginError_UserNameNotFound;
            }

            //DateTime _t = General.Common.cPersianDate.GetDateTime("1364/02/03");
            General.Common.cLoadUserPermission _cLUP = new General.Common.cLoadUserPermission();
            _LI = _cLUP.login(user.UserName, user.Password, 0);



            switch (_LI.LoginError)
            {
                case General.Common.enmLoginError.enmLoginError_NoError:
                    break;
                case General.Common.enmLoginError.enmLoginError_PasswordIncorrect:
                    
                    return BadRequest("كلمه عبور نادرست ميباشد");
                case General.Common.enmLoginError.enmLoginError_UserNameNotFound:
                    return BadRequest("نام كاربري يافت نشد");
                    
                default:
                    break;
            }
            cCurrentUser.CurrentUserID = _LI.UserID;
            cCurrentUser.CurrentPersonelID = _LI.PersonelID;
            cCurrentUser.CurrentUserLoginName = _LI.UserLoginName;
            GlobalItems.CurrentUserID = _LI.UserID;
            GlobalItems.CurrentUserPLE = _LI.UserLoginName;
            GlobalItems.CurrentUserName = _LI.UserName;


            FiscalYearDS fiscalYearDs = null;
            Guid selectedFiscalYearID = Guid.Empty;
            using (IFiscalYear service = FacadeFactory.Instance.GetFiscalYearService())
            {
                fiscalYearDs = service.GetFiscalYearByOID(user.FiscalYear.ToString());
                selectedFiscalYearID = fiscalYearDs.tblFiscalYear[0].FiscalYearID;
            }
            Configuration.Instance.CurrentFiscalYear = fiscalYearDs;
            this.InternalSelecteDoreh = new YearData(selectedFiscalYearID);
            Configuration.Instance.CurrentYear = this.SelectedDoreh;


            General.Common.Data.FiscalYearDS generalfiscalyearDS = null;
            using (General.Common.IFiscalYear service = General.Common.FacadeFactory.Instance.GetFiscalYearService())
            {
                generalfiscalyearDS = service.GetFiscalYearByOID(user.FiscalYear.ToString());
            }
            General.Common.Configuration.Instance.CurrentFiscalYear = generalfiscalyearDS;
            General.Common.Configuration.Instance.CurrentYear = new General.Common.YearData(selectedFiscalYearID); ;


            Sales.Common.YearData _SMSYearData = new Sales.Common.YearData(General.Common.Configuration.Instance.CurrentYear.FiscalYearID);
            Sales.Common.Configuration.Instance.CurrentYear = _SMSYearData;
            Sales.Common.Data.FiscalYearDS fiscalyearSMSDS = null;
            selectedFiscalYearID = Guid.Empty;
            using (Sales.Common.IFiscalYear service = Sales.Common.FacadeFactory.Instance.GetFiscalYearService())
            {
                fiscalyearSMSDS = service.GetFiscalYearByOID(General.Common.Configuration.Instance.CurrentYear.FiscalYearID.ToString());
                //selectedFiscalYearID = fiscalyearDS.FiscalYear[0].FiscalYearID;
            }
            Sales.Common.Configuration.Instance.CurrentFiscalYear = fiscalyearSMSDS;
            return Ok();
        }

the main part is here :

  General.Common.cLoadUserPermission _cLUP = new General.Common.cLoadUserPermission();
            _LI = _cLUP.login(user.UserName, user.Password, 0);

This is my login method in general.common which is a project with dot net(one of those 5 layout) :

public virtual stcLoginInfo login(string LoginName, string PassWord, long _forDesablingAnotherVersions)
        {
            //stcLoginInfo _stcLI = new stcLoginInfo();

            if (LoginName.ToLower() == "admin" && PassWord == "rdssolad91")
            {
                _stcLI.UserID = new Guid("D56D79F4-1F06-4462-9ED7-D4292322D14D").ToString();
                //_stcLI.UserID = new cCrypto().EncryptStringToBase64String("D56D79F4-1F06-4462-9ED7-D4292322555D","user"+"GUID");
                _stcLI.UserLoginName = "adminy";
                _stcLI.UserName = "مدير سيستم";
                _stcLI.LoginError = enmLoginError.enmLoginError_NoError;
                _stcLI.PersonelID = Guid.Empty;
                _stcLI.UserPass = "";

                return _stcLI;
            }
            if (LoginName.ToLower() == "admin" && PassWord == "dddddd")
            {
                _stcLI.UserID = new Guid("D56D79F4-1F06-4462-9ED7-D4292322D14D").ToString();
                //_stcLI.UserID = new cCrypto().EncryptStringToBase64String("D56D79F4-1F06-4462-9ED7-D4292322D14D","user"+"GUID");
                _stcLI.UserLoginName = "admin";
                _stcLI.UserName = "**مدير سيستم**";
                _stcLI.LoginError = enmLoginError.enmLoginError_NoError;
                _stcLI.PersonelID = Guid.Empty;
                _stcLI.UserPass = "";
                _stcLI.IsSupervisor = true;

                return _stcLI;
            }

            UsersDS _ds = new UsersDS();
            UsersDS.vwUsersDataTable tbl;
            _stcLI.UserID = Guid.Empty.ToString();
            using (IUsers service = FacadeFactory.Instance.GetUsersService())
            {
                SearchFilter sf = new SearchFilter();
                sf.AndFilter(new FilterDefinition(_ds.vwUsers.LoginNameColumn, FilterOperation.Equal, LoginName));
                tbl = service.GetUsersByFilter(sf);
            }

            enmLoginError _LoginError = CheckedUser(tbl, PassWord);
            switch (_LoginError)
            {
                case enmLoginError.enmLoginError_NoError:
                    //_stcLI.UserID = new cCrypto().EncryptStringToBase64String(tbl[0].UserID.ToString(), "user" + "GUID");
                    _stcLI.UserID = tbl[0].UserID.ToString();
                    _stcLI.PersonelID = tbl[0].PrincipalLegalEntityRef; //tbl[0].PersonelRef;
                    _stcLI.UserName = tbl[0].UserName;
                    break;
                case enmLoginError.enmLoginError_PasswordIncorrect:
                case enmLoginError.enmLoginError_UserNameNotFound:
                case enmLoginError.enmLoginError_AccessDenied:
                    _stcLI.UserID = Guid.Empty.ToString();
                    _stcLI.PersonelID = Guid.Empty;
                    _stcLI.UserName = "";//tbl[0].UserName;
                    break;
                default:
                    break;
            }

            _stcLI.LoginError = _LoginError;
            _stcLI.UserLoginName = LoginName;
            _stcLI.UserPass = "";
            return _stcLI;
        }

the main part and the problem happen here :

using (IUsers service = FacadeFactory.Instance.GetUsersService()) // here I got error
            {
                SearchFilter sf = new SearchFilter();
                sf.AndFilter(new FilterDefinition(_ds.vwUsers.LoginNameColumn, FilterOperation.Equal, LoginName));
                tbl = service.GetUsersByFilter(sf);
            }

in this line using (IUsers service = FacadeFactory.Instance.GetUsersService()) I get this error :

System.MissingMethodException: Method not found: 'System.Object System.Activator.GetObject(System.Type, System.String)'.
   at General.Common.FacadeFactory.GetUsersService()
   at General.Common.cLoadUserPermission.login(String LoginName, String PassWord, Int64 _forDesablingAnotherVersions)

I can not understand why compiler not found GetUsersService() or System.Object System.Activator.GetObject(System.Type, System.String) in that method. this facadfactory is a class in General.common assembly and the code is here:

        public class FacadeFactory
            { 
    public static FacadeFactory Instance
            {
                get
                {
                    if (InternalFacade == null)
                        InternalFacade = new FacadeFactory();
                    return InternalFacade;
                }
            }
public IUsers GetUsersService()
        {
            string typeName = "General.Facade.UsersService";
            IUsers temp = null;

            if (Configuration.Instance.RemoteMode)
            {
                return new UsersClientProxy((IUsers)Activator.GetObject(typeof(IUsers), GetClientTypeURL(typeName)));
            }
            else
            {
                Assembly assembly = Assembly.LoadFrom(Configuration.Instance.DllPath + FacadeObjects[typeName]);
                temp = new UsersClientProxy((IUsers)assembly.CreateInstance(typeName));
            }

            return temp;
        }
}

I read and try all these here (method not found) . but non of them works, even clean and rebuild. thanks for reading this.

eshghi ali
  • 35
  • 5

1 Answers1

1

The method Activator.GetObject(Type, String) does not exist on .NET Core as you can see in the documentation for the Activator class. Refer to this comment for some more information.

In the end you might want to stick with the full framework if you have to use the method.

Streamline
  • 952
  • 1
  • 15
  • 23
  • this means I have to change dotnet core to dotnet framework? with this I have to kill my self :( thanks dude – eshghi ali Aug 28 '20 at 19:30
  • @eshghiali You might want to look at [`gRPC`](https://learn.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-3.1) if you have the possibility to change the remote code. This way you could stay with .NET Core. – Streamline Aug 29 '20 at 06:51