SharePoint 2007(wss)搜索并且无法验证数据异常

时间:2009-09-03 07:54:54

标签: sharepoint wss-3.0

我们在使用SharePoint的搜索框时遇到问题。每当我们尝试搜索我们得到的东西时:

  

无法验证数据。在   System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(布尔   fEncrypt,Byte [] buf,Byte []修饰符,   Int32 start,Int32 length,IVType   ivType,Boolean useValidationSymAlgo)   在   System.Web.UI.ObjectStateFormatter.Deserialize(字符串   inputString)exeption。

是否有人知道此异常的原因或解决方法?

新条目:

我正在使用SPGridView,我在Web部件中使用datakeys属性。 webpart工作,但是我们发现使用datakeys属性可以解决这个问题,如果你尝试使用搜索文本框并单击搜索按钮,它将获得以下异常:

无法验证数据。 at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean fEncrypt,Byte [] buf,Byte [] modifier,Int32 start,Int32 length,IVType ivType,Boolean useValidationSymAlgo)    在System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)

这是我试图做的事情:

使gridview不是spgridview并将autogenerate设置为true(有效) 删除datakeynames(工作) 用空的网格测试(failes) 使用非空gridview(failes)进行测试 更改机器密钥(failes) 在gridvew(failes)上转向视图状态 将gridview ti移动到ascx文件(failes)

我似乎无法想出这个。 enyone有这个错误并且能够解决它吗?

编辑10.09.2009

这是我测试的最后一个代码。我使用MSDN示例作为参考。我也试过没有数据表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; }
}

1 个答案:

答案 0 :(得分:1)

从错误消息中我会说您在Web场环境中运行。您是否在每个SharePoint web.config文件中设置了相同的machineKey?有关详细信息,请参阅this link