2013-05-06 14 views
5

मेरी वेबसाइट हर रोज नीचे अपवाद फेंक रही है और मुझे समाधान नहीं मिला। मैंने वेब में कुछ शोध किया और यही वह है जो मैं अब तक करता हूं। एएसपीएक्स के लिए नीचे विकल्प जोड़ने से समस्या हल नहीं होगी।System.Web.UI.ViewStateException, अमान्य व्यूस्टेट

ValidateRequest = "false" EnableEventValidation = "false" ViewStateEncryptionMode = "कभी नहीं" EnableViewStateMac = "false"

इसके अलावा, मेरी रेफरल यूआरएल सही URL है और मैं पता नहीं है कि यह कैसे अनुप्रेषित है दो (समान) पैरामीटर के साथ। मेरे रेफ़रल पृष्ठ में ऐसा कोई लिंक नहीं है। कृपया मदद करे।

त्रुटि लॉग

URL : http://www.abcd.com/company-details.aspx?com=asia-pacific-pte-ltd&com=asia-pacific-pte-ltd 

referral URL : http://www.abcd.com/companies/asia-pacific-pte-ltd/ 

Inner Exception Type: System.Web.UI.ViewStateException 

Inner Exception: Invalid viewstate. Client IP: 192.162.19.193 Port: 1966 User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; MRA 6.0 (build 6001)) Presto/2.12.388 Version/12.11 ViewState: /wEPDwULLTEyMTAyMTY3NDAPZBYCAgMPZBYOZg8QDxYGHg1EYXRhVGV4dEZpZWxkBQdDb3VudHJ5Hg5EYXRhVmFsdWVGaWVsZAUNQ2xlYW5fQ291bnRyeR4LXyFEYXRhQm91bmRnZBAVCgNBbGwFQ2hpbmEJSG9uZyBLb25nBUluZGlhCUluZG9uZXNpYQhNYWxheXNpYQtQaGlsaXBwaW5lcwlTaW5nYXBvcmUIVGhhaWxhbmQHVmlldG5hbRUKA0FsbAVjaGluYQlob25nLWtvbmcFaW5kaWEJaW5kb25lc2lhCG1hbGF5c2lhC3BoaWxpcHBpbmVzCXNpbmdhcG9yZQh0aGFpbGFuZAd2aWV0bmFtFCsDCmdnZ2dnZ2dnZ2dkZAIBDxAPFgYfAAUISW5kdXN0cnkfAQUOQ2xlYW5fSW5kdXN0cnkfAmdkEBXFAgNBbGwSQWR2YW5jZWQgTWF0ZXJpYWxzC0FkdmVydGlzaW5nCkFlc3RoZXRpY3MLQWdyaWN1bHR1cmUkQWdyaWN1bHR1cmUgLSBBZ3JpY3VsdHVyYWwgTWFjaGluZXJ5G0FncmljdWx0dXJlICYgRm9vZCBQcm9kdWN0cxBBaXItY29uZGl0aW9uaW5nHUFpci1maWx0cmF0aW9uICYgUHVyaWZpY2F0aW9uB0FpcnBvcnQJQWx1bWluaXVtFEFuYWx5dGljYWwgRXF1aXBtZW50GkFuYWx5dGljYWwgSW5zdHJ1bWVudGF0aW9uFUFuYWx5dGljYWwgVGVjaG5vbG9neRZBbmQgSW50ZXJpb3IgRGVzaWduZXJzEUFuaW1hbCBQcm9kdWN0aW9uCEFudGlib2R5KUFwc... 

Inner Source: 

Exception Type: System.Web.HttpException 

Exception: The state information is invalid for this page and might be corrupted. 

Stack Trace: at System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) at System.Web.UI.HiddenFieldPageStatePersister.Load() at System.Web.UI.Page.LoadPageStateFromPersistenceMedium() at System.Web.UI.Page.LoadAllState() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.exhibition_details_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\0f461847\442b0502\App_Web_bfjqxdef.20.cs:line 0 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

अद्यतन मैं लिंक http://www.codeproject.com/Articles/14733/ViewState-Compression

नीचे से ViewState संपीड़ित करके त्रुटि को ठीक से बदलकर इसे एक बेस -64 चार सरणी त्रुटि के लिए अमान्य लंबाई तय कर दी है इसके साथ मूल विधि।

protected override object LoadPageStateFromPersistenceMedium() 
    { 
     string viewState = Request.Form["__VSTATE"]; 
     viewState = viewState.Replace(" ", "+"); 

     int mod4 = viewState.Length % 4; 
     if (mod4 > 0) 
     { 
      viewState += new string('=', 4 - mod4); 
     } 
     byte[] bytes = Convert.FromBase64String(viewState); 
     bytes = Compressor.Decompress(bytes); 
     LosFormatter formatter = new LosFormatter(); 
     return formatter.Deserialize(Convert.ToBase64String(bytes)); 
    } 

धन्यवाद मदद के लिए हर किसी को :)

उत्तर

3

मुझे खेद है कि कि लेकिन कहते हैं कि हूँ अपनी साइट कुछ भी नहीं था, और आप अपने EventValidations जितनी जल्दी हो सके पुन: सक्षम करने की जरूरत है।

आप जो देखते हैं वह an attempt to hack your site कई परीक्षण numbers with your ViewState trying to find your hash key भेजकर है।

IP you give have a big list of activity the last few days

अब, विकल्प क्या हो सकता है यह त्रुटि ViewState को तोड़ना है। यदि आपके पास बहुत बड़ा व्यूस्टेट है तो आप compress it and split it कर सकते हैं। आप disable all the controls that not needed भी कर सकते हैं। इसके अलावा आप log to see from inside what's is going on right on a base page जोड़ सकते हैं।

+1

मैंने इन EnableEventValidation = "false" को हटा दिया ViewStateEncryptionMode = "कभी नहीं" EnableViewStateMac = "false" को हटाएं और इसे मेरे द्वारा दिए गए लिंक से संपीड़ित करें और इससे समस्या हल हो गई है। बहुत बहुत धन्यवाद :) – bluebird

+0

मुझे अब यह त्रुटियां मिल रही हैं, हालांकि बेस -64 चार सरणी के लिए अमान्य लंबाई। मदद – bluebird

+0

@ user597729 यदि आप इसे केवल लॉग पर देखते हैं, तो आईपी की जांच करें, जैसा कि मैंने कहा है कि आप शायद इसकी हैक कोशिश करें और आपको चिंता करने की आवश्यकता नहीं है। यदि आप इसे उपयोगकर्ता के रूप में देखते हैं ... तो शायद यह एक मुद्दा हो सकता है। – Aristos

0

हाँ यह भी

यहाँ vbnet में

Compressor.vb

Imports System.IO 
Imports System.IO.Compression 
Public Class Compressor 

Public Shared Function Compress(ByVal data() As Byte) As Byte() 
    Dim output As MemoryStream = New MemoryStream 
    Dim gzip As GZipStream = New GZipStream(output, CompressionMode.Compress, True) 
    gzip.Write(data, 0, data.Length) 
    gzip.Close() 
    Return output.ToArray 
End Function 

Public Shared Function Decompress(ByVal data() As Byte) As Byte() 
    Dim input As MemoryStream = New MemoryStream 
    input.Write(data, 0, data.Length) 
    input.Position = 0 
    Dim gzip As GZipStream = New GZipStream(input, CompressionMode.Decompress, True) 
    Dim output As MemoryStream = New MemoryStream 
    Dim buff() As Byte = New Byte((64) - 1) {} 
    Dim read As Integer = -1 
    read = gzip.Read(buff, 0, buff.Length) 

    While (read > 0) 
     output.Write(buff, 0, read) 
     read = gzip.Read(buff, 0, buff.Length) 

    End While 

    gzip.Close() 
    Return output.ToArray 
End Function 
End Class 

मेरे लिए काम करता है और इस आप default.aspx अंदर यह

आयात System.IO जरूरत पेस्ट

Protected Overrides Function LoadPageStateFromPersistenceMedium() As Object 
    Dim viewState As String = Request.Form("__VSTATE") 
    Dim bytes() As Byte = Convert.FromBase64String(viewState) 
    bytes = Compressor.Decompress(bytes) 
    Dim formatter As LosFormatter = New LosFormatter 
    Return formatter.Deserialize(Convert.ToBase64String(bytes)) 
End Function 

Protected Overrides Sub SavePageStateToPersistenceMedium(ByVal viewState As Object) 
    Dim formatter As LosFormatter = New LosFormatter 
    Dim writer As StringWriter = New StringWriter 
    formatter.Serialize(writer, viewState) 
    Dim viewStateString As String = writer.ToString 
    Dim bytes() As Byte = Convert.FromBase64String(viewStateString) 
    bytes = Compressor.Compress(bytes) 
    ClientScript.RegisterHiddenField("__VSTATE", Convert.ToBase64String(bytes)) 
End Sub 
संबंधित मुद्दे