2011-07-05 100 views
0

我在從dropdownlist回發時收到此異常。 注意:Dropdownlist與BigInt綁定爲一個值類型,並在usercontrol中。 當我在下拉列表中選擇值我得到這個異常:錯誤:此頁面的狀態信息無效,可能已損壞

The state information is invalid for this page and might be corrupted. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: The state information is invalid for this page and might be corrupted. 

Source Error: 

[No relevant source lines] 


Source File: c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\074f73f4\bcce5747\App_Web_j32tj0nd.0.cs Line: 0 

Stack Trace: 

[FormatException: Input string was not in a correct format.] 
    System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +9594283 
    System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +119 
    System.Convert.ToInt32(String value, IFormatProvider provider) +48 
    System.Web.UI.Page.get_RequestViewStateString() +245 

[ViewStateException: Invalid viewstate. 
    Client IP: ::1 
    Port: 2479 
    Referer: http://localhost:89//home.aspx?catid=8 
    Path: /home.aspx 
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.18) Gecko/20110614 AskTbPTV2/3.12.2.16749 Firefox/3.6.18 GTB7.1 
    ViewState: ] 

[HttpException (0x80004005): The state information is invalid for this page and might be corrupted.] 
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +198 
    System.Web.UI.ViewStateException.ThrowViewStateError(Exception inner, String persistedState) +14 
    System.Web.UI.Page.get_RequestViewStateString() +567 
    System.Web.UI.HiddenFieldPageStatePersister.Load() +241 
    System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +106 
    System.Web.UI.Page.LoadAllState() +43 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +8431 
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +253 
    System.Web.UI.Page.ProcessRequest() +78 
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21 
    System.Web.UI.Page.ProcessRequest(HttpContext context) +49 
    ASP.home_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\074f73f4\bcce5747\App_Web_j32tj0nd.0.cs:0 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 

我已經做了谷歌和嘗試很多事情,如:在webconfig :

<pages maxPageStateFieldLength="40" 

ValidateRequest="false" 

但沒有解決方案。

請專家給我解答。從最近幾個小時我面臨這個問題,早些時候它工作正常。

編輯:注意:我已經測試過,發現UC在其他頁面「測試頁」上工作正常。我認爲這一定是與一些事情衝突...請建議..

回答

0

最後我解決了這個問題,但我仍然無法理解它的原因。

我解決類似問題: 我的網頁是含有:

我的母版包含一個屬性:

public bool ShowTabbedFlash 
     { 
      get { return showTabbedFlash; } 
      set { showTabbedFlash = value; } 
     } 

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (ShowTabbedFlash) 
      { 
       UserControls.TabbedFlash tf = (UserControls.TabbedFlash)Page.LoadControl("UserControls/TabbedFlash.ascx"); 
       Phtabbedflash.Controls.Add(tf); 
      } 
     } 
在我的網頁

<%@ MasterType VirtualPath="~/Main.Master" %> 

在代碼中,我被設定值在母版頁屬性中:

private void ShowTabbedFlash() 
     { 
      Master.ShowTabbedFlash = true; 
     } 

現在,當我有評論更改母版的屬性

// Master.ShowTabbedFlash = true; 

其開始工作很好..

專家的價值的代碼,請給我一些知識,爲什麼它的母版,因爲屬性的發生?

+0

請參閱我的答案的解釋。 – VinayC

2

您的問題與頁面/控件生命週期有關 - 當您修改控件樹(或動態加載控件)時,在回發。 ASP.NET期望存在相同的控制樹,否則它無法正確加載視圖狀態並出現錯誤。

所以罪魁禍首你是下面的代碼:

if (ShowTabbedFlash) 
{ 
    UserControls.TabbedFlash tf = UserControls.TabbedFlash)Page.LoadControl("UserControls/TabbedFlash.ascx"); 
    Phtabbedflash.Controls.Add(tf); 
} 

通常情況下,通過匹配控件ID控制樹匹配的工作 - 通過不提供IDS,ASP.NET將生成的ID控制 - 如果這些大幹快上後改變 - 然後ASP.NET運行時遇到不正確的控制類型爲特定的id,同時恢復視圖狀態,因此錯誤。爲用戶控件提供一些特定的ID,它應該可以工作(類似的邏輯將應用於頁面上其他地方或用戶控件內的任何這種動態加載的控件)。例如,

if (ShowTabbedFlash) 
{ 
     UserControls.TabbedFlash tf = UserControls.TabbedFlash)Page.LoadControl("UserControls/TabbedFlash.ascx"); 
     tf.ID = "SomeUniqueID"; 
     Phtabbedflash.Controls.Add(tf); 
} 
+0

其不適用於我:( –

+0

)您可以嘗試移動master_page_init中的相關代碼。 – VinayC

+0

仍然存在問題,因爲它.. –

相關問題