CreateOrganizationProfile错误对象引用未设置为对象的实例

本文关键字:对象 实例 设置 错误 对象引用 CreateOrganizationProfile | 更新日期: 2023-09-27 18:03:37

我使用微软代码在用户配置文件服务器中创建一个新的组织,如http://msdn.microsoft.com/en-us/library/ms545122.aspx。

每次我调用CreateOrganizationProfile我得到以下结果:

System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Office.Server.UserProfiles.OrganizationProfile.set_Parent(ProfileBase value)

我使用的确切代码是:

    [WebMethod]
    public void CreateOrganisation(string OrganisationName)
    {
       SPSecurity.RunWithElevatedPrivileges(delegate()
       {
            using (SPSite site = new SPSite(_serverName))
            {
                // Removing this will cause the error "Operation is not valid due to the current state of the object".
                HttpContext.Current = null;
                SPServiceContext context = SPServiceContext.GetContext(site);
                ProfileSubtypeManager psm = ProfileSubtypeManager.Get(context);
                // choose default organization profile subtype as the subtype
                string subtypeName = ProfileSubtypeManager.GetDefaultProfileName(ProfileType.Organization);
                ProfileSubtype subType = psm.GetProfileSubtype(subtypeName);
                OrganizationProfileManager opm = new OrganizationProfileManager(context);
                // choose Root Organization as the parent
                OrganizationProfile parentOrg = opm.RootOrganization;
                // create an organization profile and set its display name
                OrganizationProfile profile = opm.CreateOrganizationProfile(subType, parentOrg);
                profile.DisplayName = "Test Org1";
                // commit to save changes
                profile.Commit();
            }
        });
        return;
    }

奇怪的是,有人在这里遇到了同样的问题http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/7b5101fd-0ea6-4716-82b1-ac4609b9973c/,但它从来没有解决过。

我已经确认用户配置文件服务正在运行并响应。此外,调用CreateOrganizationProfile时,parentOrg和subtypeName不为空。

谁有什么我可以试试的,或者谁能发现可能的问题是什么?

非常感激!

CreateOrganizationProfile错误对象引用未设置为对象的实例

我有同样的问题,我通过改变行

来修复它
OrganizationProfile parentOrg = opm.RootOrganization;

OrganizationProfile parentOrg = (OrganizationProfile)opm.GetProfile(1);

GetProfile(1)在我的例子中返回RootOrganization。

希望这能帮助到一些人!

我不是sharepoint专家,但是这个http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.organizationprofilemanager.createorganizationprofile.aspx说明你需要用户配置文件管理权限,这个http://msdn.microsoft.com/en-us/library/microsoft.office.server.userprofiles.organizationprofile.parent.aspx可能暗示你需要用户配置文件管理器权限来做你想做的事情。

编辑:
因为你的代码试图"写"一些似乎相关的东西http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx
基本上,它表示您在呼叫SPSecurity.RunWithElevatedPrivileges之前错过了呼叫SPUtility.ValidateFormDigest()SPWeb.ValidateFormDigest()