C# 添加新站点列不是名为“;xx”;找不到

C# 添加新站点列不是名为“;xx”;找不到,c#,sharepoint-2010,C#,Sharepoint 2010,场景是,我试图添加一个新的站点列,我需要更新模式定义。 第二次执行更新时,它说找不到该字段,但它在那里,在激活功能崩溃后,我甚至可以在站点列上看到它 private void AddManagerField(SPWeb currentweb) { try { //Add new field to Site Columns string managerFieldName

场景是,我试图添加一个新的站点列,我需要更新模式定义。 第二次执行更新时,它说找不到该字段,但它在那里,在激活功能崩溃后,我甚至可以在站点列上看到它

private void AddManagerField(SPWeb currentweb)
        {
             try
            {
                //Add new field to Site Columns
                string managerFieldName = currentweb.Fields.Add(SponsoringCommon.Constants.FIELDS_SPONSORINGMANAGER_NAME, SPFieldType.User, false);
                SPFieldUser managerField = currentweb.Fields.GetFieldByInternalName(managerFieldName) as SPFieldUser;
                managerField.Group = SponsoringCommon.Constants.DEFAULT_TAXONOMY_TERMGROUP_NATIONALELOTERIJSPONSORING;
                managerField.Update();


                SPFieldUser managerField2 = currentweb.Fields.GetFieldByInternalName(managerFieldName) as SPFieldUser;

                string schemaXmlWithResourceTokens = managerField2.SchemaXmlWithResourceTokens;
                int startIndex = schemaXmlWithResourceTokens.IndexOf("\"", schemaXmlWithResourceTokens.IndexOf("DisplayName=\"")) + 1;
                int endIndex = schemaXmlWithResourceTokens.IndexOf("\"", startIndex);
                int substringLength = endIndex - startIndex;
                string value = schemaXmlWithResourceTokens.Substring(startIndex, substringLength);
                schemaXmlWithResourceTokens = schemaXmlWithResourceTokens.Replace(value, "$Resources:SPNLSponsoring,Field_SponsoringManager_Name");
                managerField2.SchemaXml = schemaXmlWithResourceTokens;
                managerField2.Update();


                SPContentTypeId dossierCTID = new SPContentTypeId(SponsoringCommon.Constants.CONTENTTYPES_DOSSIER_ID);
                SPContentType dossierCT = currentweb.ContentTypes[dossierCTID];
                SPFieldLink managerFieldLink = new SPFieldLink(managerField2);
                dossierCT.FieldLinks.Add(managerFieldLink);
                dossierCT.Update(true);
            }
            catch (Exception ex)
            {
                Logger.LogError("error", "AddManagerField(SPWeb currentweb)", ex);
                throw;
            }

        }

您是否检查过内部名称是否相同

如果您有权访问服务器,请尝试获取列的GUID,并改用它,因为这将保证您正在查找正确的字段

是您传递给此方法的web中的字段吗

抱歉可能看起来很简单,但一旦我坐下来看完我的代码(调试后),我通常会发现我忽略了所有的角度

希望这有帮助
特鲁兹