簡體   English   中英

系統缺少方法異常。 為什么會發生這種情況

[英]system missing method exception. why this happening

我想知道是否有人可以在這里提供幫助。 我有一個項目作為一般項目,其中包括 5 個布局。 現在我正在嘗試使用dotnet core編寫 api,它使用數據訪問和commone布局。 所以我添加了這 2 個 dll 作為程序集參考(它們使用的是dotnet framwork ),並且在我的 api 中我調用它們的類:

[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();
        }

主要部分在這里:

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

這是我在 general.common 中的登錄方法,這是一個帶有 dot net(這 5 個布局之一)的項目:

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;
        }

主要部分和問題發生在這里:

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);
            }

在這一行using (IUsers service = FacadeFactory.Instance.GetUsersService())我得到這個錯誤:

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)

我不明白為什么編譯器在該方法中找不到GetUsersService()System.Object System.Activator.GetObject(System.Type, System.String) 這個facadfactory是 General.common 程序facadfactory的一個類,代碼在這里:

        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;
        }
}

在這里閱讀並嘗試了所有這些(未找到方法) 但它們都不起作用,甚至清理和重建。 感謝您閱讀本文。

如您在Activator類的文檔中所見,.NET Core 上不存在Activator.GetObject(Type, String)方法。 有關更多信息,請參閱評論。

最后,如果您必須使用該方法,您可能希望堅持使用完整的框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM