2009-09-03 3 views
3

Nous avons un problème avec le champ de recherche de SharePoint. Chaque fois que nous essayons de chercher quelque chose nous obtenons:Recherche dans SharePoint 2007 (wss) et Impossible de valider les données Exception

Impossible de valider les données. à System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (Boolean fEncrypt, byte [] buf, byte [] modificateur, Int32 début, la longueur Int32, ivtype ivtype, Boolean useValidationSymAlgo) à System.Web.UI.ObjectStateFormatter .Deserialize (Chaîne inputString) exeption.

Est-ce que quelqu'un connaît la raison de cette exception, ou un moyen de contourner ce problème?

Nouvelle entrée:

J'utilise un SPGridView où j'utilise la propriété DataKeys dans une partie web. La partie web fonctionne, mais nous avons trouvé que l'utilisation de la propriété datakeys casse la recherche en cela si vous essayez d'utiliser la zone de recherche et cliquez sur le bouton de recherche, elle obtient cette exception:

Impossible de valider les données. à System.Web.Configuration.MachineKeySection.EncryptOrDecryptData (boolean fEncrypt, octet [] buf, octet [] modificateur, début Int32, longueur Int32, IVType ivType, Boolean useValidationSymAlgo) à System.Web.UI.ObjectStateFormatter.Deserialize (String inputString)

Voici ce que je tryed faire:

faire le gridview pas spgridview et définir autogenerate vrai (travaux) Retirer les DataKeyNames (travaux) test avec un gridvew vide (Failes) test avec un non-empty gridview (failes) Modification des clés de la machine (défaillances) Statut de virage sur la grille (échecs) Déplacer le gridview ti un fichier ascx (échecs)

Je n'arrive pas à comprendre cela. Est-ce que enyone a eu cette erreur et a été capable de contourner le problème?

EDit 10.09.2009

C'est le dernier code je l'ai testé. J'ai utilisé un MSDN excample comme référence. J'ai aussi essayé sans table de données MSDN Example

public class TestErrorGridView : System.Web.UI.WebControls.WebParts.WebPart 
{ 
    Control ascxToAdd; 
    protected DataTable PropertyCollection = new DataTable(); 
    private DataColumn key; 
    public TestErrorGridView() 
    { 
     key = PropertyCollection.Columns.Add("ID", typeof(string)); 
     PropertyCollection.Columns.Add("Name", typeof(string)); 
    } 
    public void AddProperty(TestBindObject data) 
    { 
     DataRow newRow = PropertyCollection.Rows.Add(); 

     newRow["ID "] = data.ID; 
     newRow["Name"] = data.Name; 
    } 
    public void BindGrid(SPGridView grid) 
    { 
     SPBoundField fldPropertyName = new SPBoundField(); 
     fldPropertyName.HeaderText = "ID"; 
     fldPropertyName.DataField = "ID"; 
     grid.Columns.Add(fldPropertyName); 
     SPBoundField fldPropertyValue = new SPBoundField(); 
     fldPropertyValue.HeaderText = "Name"; 
     fldPropertyValue.DataField = "Name"; 
     grid.Columns.Add(fldPropertyValue); 

     PropertyCollection.PrimaryKey = new DataColumn[] { key }; 
     grid.DataSource = PropertyCollection.DefaultView; 
     grid.DataKeyNames = new string[] { key.ColumnName }; 
     grid.DataBind(); 
    } 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 

    } 

    protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 
     TestBindObject t1 = new TestBindObject() { ID = 1, Name = "Test3" }; 
     this.AddProperty(t1); 

     SPGridView testGrid = new SPGridView() { AutoGenerateColumns = false }; 

     this.BindGrid(testGrid); 


     this.Controls.Add(testGrid); 

    } 


} 

[Serializable] 
public class TestBindObject 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 
+0

Je ne sais pas Alex, cela pourrait juste être lié à web.config .... Je suis d'accord avec Kane ici, il devrait tenir compte de la machinekey dans tous les web.configs – Colin

+0

pouvez-vous s'il vous plaît poster un code de grille? –

Répondre

1

Dans le message d'erreur, je dirais que vous travaillez dans un environnement ferme Web. Avez-vous défini la même machineKey dans chacun des fichiers SharePoint web.config? Voir this link pour un peu plus d'informations.

+0

Il a quelque chose à voir avec une partie Web. Lorsque je supprime cette partie Web, il semble bien fonctionner. La partie web utilise le kit d'outils Ajax, peut-il avoir quelque chose à voir avec ça? – Gaotter

+0

Je l'ai trouvé avec la propriété GridView datakeynames. Si je définis des datakeynames et auto génère des colonnes false, j'obtiens l'erreur. – Gaotter

Questions connexes