2011-07-25 220 views
1

我正在使用Microsoft代码在用户配置文件服务器中创建新组织,如http://msdn.microsoft.com/en-us/library/ms545122.aspxCreateOrganizationProfile错误对象引用未设置为对象的实例

每次我打电话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不为空。

有没有人有我可以尝试的东西,或者任何人都可以发现什么可能是问题?

非常感谢!

+0

有任何更新,我面临同样的问题 –

回答

1

我不是共享点专家,但此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
基本上它说你缺少对SPUtility.ValidateFormDigest()SPWeb.ValidateFormDigest()通话主叫SPSecurity.RunWithElevatedPrivileges

+0

Yahia - 我想你可能会做些什么......我会调查并报告回来!谢谢你的回答 - 如果这是对的,我会欠你一杯啤酒!任何其他建议仍然欢迎! – ben

1

之前,我有同样的问题,我固定它通过改变线

OrganizationProfile parentOrg = opm.RootOrganization; 

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

GetProfile(1)在我的情况下返回RootOrganization。

希望这可以帮助别人!

相关问题