Sharepoint: Accès refusé lors de la modification d'une page (en raison de la mise en page) ou un élément de liste

StackOverflow https://stackoverflow.com/questions/2064980

Question

Je suis connecté en tant que le compte système, il est donc probablement pas un « accès réel refusé »! Ce que j'ai fait : - Une page maître personnalisée - Une mise en page personnalisée à partir d'un type de contenu personnalisé (avec des champs personnalisés)

Si j'ajoute un champ personnalisé (alias « champ de contenu » dans les outils SPD) dans ma mise en page, je reçois un accès refusé lorsque je tente de modifier une page qui vient de cette mise en page.

Ainsi, par exemple, si j'ajoute dans ma mise en page de cette ligne dans un « asp: contenu » tag:   Je reçois un accès refusé. Si je le supprimer, everyting est très bien. (Le champ « test » est un champ qui vient du type de contenu).

Toute idée?

UPDATE

Eh bien, j'ai essayé dans un site vide et il a bien fonctionné, donc il doit y avoir quelque chose de mal avec mon application web: (

Mise à jour # 2

On dirait que cette ligne dans la page maître me donne l'accès refusé:

<SharePoint:DelegateControl runat="server" ControlId="PublishingConsole" Visible="false"
    PrefixHtml="&lt;tr&gt;&lt;td colspan=&quot;0&quot; id=&quot;mpdmconsole&quot; class=&quot;s2i-consolemptablerow&quot;&gt;"
    SuffixHtml="&lt;/td&gt;&lt;/tr&gt;"></SharePoint:DelegateControl>

Mise à jour # 3

I Found http://odole.wordpress.com/2009/01/30/access-denied-error-message-while-editing-properties-of-any-document- en un document-mousse bibliothèque /

On dirait un problème similaire. Mais nos versions sont Sharepoint avec les dernières mises à jour. Je vais essayer d'utiliser le code qui est censé fixer les listes et afficher une autre mise à jour.

** Mise à jour # 4 **

OK ... J'ai essayé le code que je trouve sur la page ci-dessus (voir le lien) et il semble corriger la chose. Je ne l'ai pas testé la solution à 100%, mais jusqu'à présent, si bon. Voici le code que j'ai fait pour un récepteur de fonction (je le code affiché à partir du lien ci-dessus):

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

using System.Xml;

namespace MyWebsite.FixAccessDenied
{
    class FixAccessDenied : SPFeatureReceiver
    {
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            FixWebField(SPContext.Current.Web);
        }

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            //throw new Exception("The method or operation is not implemented.");
        }

        public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        {
            //throw new Exception("The method or operation is not implemented.");
        }

        public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        {
            //throw new Exception("The method or operation is not implemented.");
        }

        static void FixWebField(SPWeb currentWeb)
        {

            string RenderXMLPattenAttribute = "RenderXMLUsingPattern";

            SPSite site = new SPSite(currentWeb.Url);
            SPWeb web = site.OpenWeb();

            web.AllowUnsafeUpdates = true;
            web.Update();

            SPField f = web.Fields.GetFieldByInternalName("PermMask");
            string s = f.SchemaXml;
            Console.WriteLine("schemaXml before: " + s);
            XmlDocument xd = new XmlDocument();
            xd.LoadXml(s);
            XmlElement xe = xd.DocumentElement;
            if (xe.Attributes[RenderXMLPattenAttribute] == null)
            {
                XmlAttribute attr = xd.CreateAttribute(RenderXMLPattenAttribute);
                attr.Value = "TRUE";
                xe.Attributes.Append(attr);
            }

            string strXml = xe.OuterXml;
            Console.WriteLine("schemaXml after: " + strXml);
            f.SchemaXml = strXml;

            foreach (SPWeb sites in site.AllWebs)
            {
                FixField(sites.Url);
            }

        }

        static void FixField(string weburl)
        {
            string RenderXMLPattenAttribute = "RenderXMLUsingPattern";

            SPSite site = new SPSite(weburl);
            SPWeb web = site.OpenWeb();
            web.AllowUnsafeUpdates = true;
            web.Update();

            System.Collections.Generic.IList<Guid> guidArrayList = new System.Collections.Generic.List<Guid>();

            foreach (SPList list in web.Lists)
            {
                guidArrayList.Add(list.ID);
            }

            foreach (Guid guid in guidArrayList)
            {
                SPList list = web.Lists[guid];
                SPField f = list.Fields.GetFieldByInternalName("PermMask");
                string s = f.SchemaXml;
                Console.WriteLine("schemaXml before: " + s);
                XmlDocument xd = new XmlDocument();
                xd.LoadXml(s);
                XmlElement xe = xd.DocumentElement;
                if (xe.Attributes[RenderXMLPattenAttribute] == null)
                {
                    XmlAttribute attr = xd.CreateAttribute(RenderXMLPattenAttribute);
                    attr.Value = "TRUE";
                    xe.Attributes.Append(attr);
                }
                string strXml = xe.OuterXml;
                Console.WriteLine("schemaXml after: " + strXml);
                f.SchemaXml = strXml;
            }

        }

    }
}

Il suffit de mettre ce code en tant que récepteur de fonction, et l'activer sur le site racine, il convient de toutes les boucles creux et sous-sites fixer les listes.

SOMMAIRE

Vous obtenez un ACCES REFUSE lors de l'édition d'un ou ARTICLE

Vous obtenez toujours l'erreur même si vous êtes connecté en tant Super Administrateur du **** f dans le monde (désolé, j'ai passé 3 jours sur ce bug)

Pour moi, il est arrivé après une importation d'une autre définition du site (un fichier cmp)

En fait, il est censé être un bug connu et il est censé être fixé depuis Février 2009, mais il semble que ce n'est pas.

Le code que doit fixer la posté chose ci-dessus.

Était-ce utile?

La solution 3

Voir le code que je l'ai posté dans l'édition du poste. Il fixe mon problème.

Autres conseils

Essayez de publier votre MasterPage et mises en page, c'est la raison la plus courante. Étant donné que le compte système est godmode, il n'obtiendra pas cette erreur.

Dans SharePoint Designer vous ne pouvez pas faire la dernière étape dans le processus de publication (d'approbation), de sorte que vous:

SharePoint Designer:
CheckIn => Publier la version majeure, cliquez sur le bouton OK ou aller à / _catalogs / masterpage sur le site.

Ensuite, et utilisez le menu contextuel pour approuver la MasterPage et Layouts.

Quelques idées:

  • Vérifiez que toutes les pièces Web dans votre commande Mise en page et page principale ne sont pas enregistrés comme sûrs.
  • Avez-vous défini votre propre type de champ personnalisé, comme écrire une classe qui étend SPField? Si oui, vous utilisez un champ personnalisé de contrôle? Si vous êtes, vérifiez si elle est en train de faire tout ce qui peut avoir besoin des privilèges élevés.
  • De même, vérifier tous les panneaux en mode d'édition contenant des parties Web de contrôles web qui pourraient essayer de faire quelque chose qui a besoin des privilèges élevés.

Le problème semble être causé par une erreur dans la fonction stsadm -o export dans certaines versions de SharePoint (je l'ai fait une exportation à partir d'un serveur RTM MOSS 2007). Importation du fichier d'exportation provoque bogus le problème « modifier-denied accès » dans toutes les listes NOUVELLEMENT CREES. Les correctifs pour la version ultérieure de Microsoft Fix stsadm -o export, mais ne pas fixer les listes brisées; qui nécessite une procédure comme tinky05 's.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top