Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#值不能为空。参数名称:用户_C#_Connection String - Fatal编程技术网

C#值不能为空。参数名称:用户

C#值不能为空。参数名称:用户,c#,connection-string,C#,Connection String,在我的C#应用程序中,我使用了两个连接字符串(应用程序、用户)。要更改这些连接字符串,我使用: private static void SetProviderConnectionString(string connectionString) { var connectionStringFieldM = Membership.Provider.GetType().GetField("_sqlConnectionString",

在我的C#应用程序中,我使用了两个连接字符串(应用程序、用户)。要更改这些连接字符串,我使用:

private static void SetProviderConnectionString(string connectionString)
        {
            var connectionStringFieldM =
            Membership.Provider.GetType().GetField("_sqlConnectionString",
                        BindingFlags.Instance | BindingFlags.NonPublic);
            var connectionStringFieldR = Roles.Provider.GetType().GetField("_sqlConnectionString",
                       BindingFlags.Instance | BindingFlags.NonPublic);
            var connectionStringFieldP = ProfileManager.Provider.GetType().GetField("_sqlConnectionString",
                    BindingFlags.Instance | BindingFlags.NonPublic);

            connectionStringFieldM.SetValue(Membership.Provider, connectionString);
            connectionStringFieldR.SetValue(Roles.Provider, connectionString);
            connectionStringFieldP.SetValue(ProfileManager.Provider, connectionString);
        }

        public static void SetProviderUsers()
        {
            SetProviderConnectionString(ConfigurationManager.ConnectionStrings["users_cs"].ConnectionString);
        }

        public static void SetProviderApp()
        {
            SetProviderConnectionString(ConfigurationManager.ConnectionStrings["application_cs"].ConnectionString);
        }
因此,在我的代码中,每当我想添加用户时,我都会这样做:

public int CreateUser(int stid, int cid, int usrId, string email, string tel, string mob, string username, 
            bool create, bool prime)
        {
            int result = 0; 
            Guid userid = new Guid();
            DALUsers.UserDBDataContext dc = new DALUsers.UserDBDataContext();
            DAL.AppDataContext d = new DAL.AppDataContext();

            BLL.Security.SetProviderUsers();

            if (create) //create the user first
            {

                string question = "1";
                string answer = "1";
                bool isAproved = true;

                string password = System.Web.Security.Membership.GeneratePassword(8, 2);


                MembershipCreateStatus cs = new MembershipCreateStatus();

                MembershipUser newUser = Membership.CreateUser(username, password, email, question, answer, isAproved, out cs);
                Membership.UpdateUser(newUser);
                Roles.AddUserToRole(username, "User_x");
                if (cs == MembershipCreateStatus.Success)
                {
                    result = 1;
                }
                else
                    X.MessageBox.Info("Error", "Cannot create user due to :" + cs.ToString(), UI.Danger).Show();
            }

            //at this point we have the user created either way. 

            // return userid;
            var id = (from i in dc.aspnet_Users where i.UserName.CompareTo(username) == 0 select i.UserId);
            if (id.Count() == 1)
            {
                userid = id.First();
                bool contin = true;
                var fulname = (from i in dc.Clients where i.id == usrId select i).First();

                if (String.IsNullOrEmpty(fulname.Mobile)) fulname.Mobile = mob; 

                fulname.Email = email;
                fulname.ModifiedBy = HttpContext.Current.User.Identity.Name;
                fulname.ModifiedDate = DateTime.Now;

                dc.SubmitChanges();


                DateTime dt = DateTime.Now;

                DALUsers.CIUser usr = new DALUsers.CIUser();

                var existing = (from i in dc.CIUsers where i.UserName.CompareTo(username) == 0 && i.cid == cid select i);
                if (existing.Count() > 0)
                {
                    X.MessageBox.Info("Warning", "UserName already exists . Please try another!", UI.Warning).Show();
                    contin = false;
                }
                else
                {


                    dc.CIUsers.InsertOnSubmit(usr);
                    dc.SubmitChanges();
                }

                if (contin)
                {
                    DALUsers.CIUser usrNew = new DALUsers.CIUser();

                    var approved = (from k in dc.aspnet_Memberships //if user is not approved 
                                    where k.UserId == userid
                                    select k).FirstOrDefault();

                    if (approved.IsApproved == false)
                    {
                        approved.IsApproved = true;
                    }

                    ProfileBase profile = ProfileBase.Create(username);
                    profile.SetPropertyValue("Mobile", mob);
                    profile.SetPropertyValue("Email", email);
                    profile.Save();

                    usrNew.UserId = usrId;
                    usrNew.cid = cid;
                    usrNew.FullName = fulname.LastName + " " + fulname.FirstName;
                    usrNew.Role = "User_x";
                    usrNew.SignRights = prime;
                    usrNew.IsPrime = prime;
                    usrNew.stid = stid;
                    usrNew.UserName = username;
                    usrNew.UserId = userid;
                    usrNew.CreatedDate = DateTime.Now;
                    usrNew.CreatedBy = HttpContext.Current.User.Identity.Name;
                    dc.CIUsers.InsertOnSubmit(usrNew);
                    dc.SubmitChanges();

                    result = 1;

                    X.MessageBox.Info("Success", "The user has been successfully added", UI.Success).Show();
                }
            }
            else
                X.MessageBox.Info("Error", "Could not find the user", UI.Danger).Show();
            BLL.Security.SetProviderApp();
            return result;
        }
编辑 我刚刚看到在我的代码中有这样一行:

DALUsers.aspnet_User user = new DALUsers.aspnet_User();
但是变量user不在代码中的任何其他地方使用。也许它已经留在那里了。。。它是我代码中唯一名为
user
的变量。这是问题的根源吗?但为什么只在生产服务器上? 编辑

奇怪的是,当我从VisualStudio本地运行我的应用程序时,它就像一个魔咒。但是,当我在生产服务器上运行的应用程序中添加用户时,当我尝试添加第二个用户时,它失败,我收到以下错误:

值不能为null。参数名称:用户

如果我尝试登录到我的应用程序之后,它失败了。我必须从iis重新启动我的网站才能再次登录。
有什么想法吗?

我在你的代码中找不到这个错误,但是如果你说这个错误只发生在服务器上,并且你确定你的文件在服务器和你的本地机器之间同步,那么这个错误可能就在你的web.config中。看一看

我在您的代码中找不到错误,但是如果您说此错误只发生在服务器中,并且您确定您的文件在服务器和本地计算机之间同步,那么错误可能在您的web.config中。看看“//…添加用户的代码”这是什么?共享这些行我在代码中看不到任何具有名为“user”的参数的方法。您的错误不可能在那里。通过填充aspnet表(aspnet_Profile、aspnet_Users、aspnet_UsersInRoles等…以及用户数据库中的我的用户表)来创建用户,顺便说一句,您是否认真地在私有字段中反映以更改对象的行为?恶心@Sefe请查看我编辑的帖子。关于“user”变量的信息“/…添加用户的代码”这是什么?共享这些行我在代码中看不到任何具有名为“user”的参数的方法。您的错误不可能在那里。通过填充aspnet表(aspnet_Profile、aspnet_Users、aspnet_UsersInRoles等…以及用户数据库中的我的用户表)来创建用户,顺便说一句,您是否认真地在私有字段中反映以更改对象的行为?恶心@Sefe请查看我编辑的帖子。有关“用户”变量的信息