7

話:

休暇 (年次休暇、休暇の使用など) を表示するチャートを開発しています。これまでのところ、コンボ ボックスから選択した年、ビジネス ユニット、および部門について、それが機能している結果に満足しています ...しかし、これをしばらく行った後にこの部門を切り替えると、この奇妙なエラーが発生します... *

このページの状態情報は無効であり、破損している可能性があります。

[該当するソース行はありません]


だから私は少し下にスクロールしてこれを見つけました

[ViewStateException: Invalid viewstate. 
  Client IP: ::1
  Port: 27968
  Referer: http://localhost/HolidayTracker/Report/VacationChart.aspx
  Path: /HolidayTracker/Report/VacationChart.aspx
  User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
  ViewState: ....

だから私は自分のビューステートをチェックしましたが、エラーや何か他のものは見つかりませんでした..

        private HtBusinessUnit selectedBU
    {
        get
        {
            return (HtBusinessUnit)ViewState["selectedBu"];

        }
        set
        {
            ViewState["selectedBu"] = value;
        }
    }
    private HtDepartment selectDep
    {
        get
        {
            return (HtDepartment)ViewState["selectedDep"];
        }
        set
        {
            ViewState["selectedDep"] = value;
        }
    }
    private string selectedYear
    {
        get
        {
            return ViewState["selectedYear"] != null ? ViewState["selectedYear"].ToString() : "";
        }
        set
        {
            ViewState["selectedYear"] = value;
        }
    }

ここにエラーメッセージがあります

[ArgumentException: Invalid token for impersonation - it cannot be duplicated.]
   System.Security.Principal.WindowsIdentity.CreateFromToken(IntPtr userToken) +3597947
   System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info) +187
   System.Security.Principal.WindowsIdentity..ctor(SerializationInfo info, StreamingContext context) +51

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeMethodHandle.SerializationInvoke(IRuntimeMethodInfo method, Object target, SerializationInfo info, StreamingContext& context) +0
   System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) +298
   System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) +45
   System.Runtime.Serialization.ObjectManager.DoFixups() +230
   System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) +137
   System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) +186
   System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) +15
   System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +1873
   System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +334
   System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +420
   System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +432
   System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader reader) +420
   System.Web.UI.ObjectStateFormatter.Deserialize(Stream inputStream) +139

[ArgumentException: The serialized data is invalid.]
   System.Web.UI.ObjectStateFormatter.Deserialize(Stream inputStream) +203
   System.Web.UI.ObjectStateFormatter.Deserialize(String inputString, Purpose purpose) +481
   System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter2.Deserialize(String serializedState, Purpose purpose) +8
   System.Web.UI.Util.DeserializeWithAssert(IStateFormatter2 formatter, String serializedState, Purpose purpose) +40
   System.Web.UI.HiddenFieldPageStatePersister.Load() +127

[ViewStateException: Invalid viewstate. 
    Client IP: ::1
    Port: 27795
    Referer: http://localhost/HolidayTracker/Report/VacationChart.aspx
    Path: /HolidayTracker/Report/VacationChart.aspx
    User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
    ViewState: /wEPDwULLTE2OTYyMjA5MzkPFgQeCnNlbGVjdGVkQnUy1p4BAAEAAAD/////AQAAAAAAAAAMAgAAAElIb2xpZGF5VHJhY2tlckRhdGEsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsDAMAAABVU3lzdGVtLkRhdGEuRW50aXR5LCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAKEhvbGlkYXlUcmFja2VyLkRhdGEuTW9kZWwuSHRCdXNpbmVzc1VuaXQFAAAAD19CdXNpbmVzc1VuaXRJZAVfTmFtZQ9fT3JnYW5pc2F0aW9uSWQbRW50aXR5T2JqZWN0K19yZWxhdGlvbnNoaXBzF0VudGl0eU9iamVjdCtfZW50aXR5S2V5AAEABAQICDNTeXN0ZW0uRGF0YS5PYmplY3RzLkRhdGFDbGFzc2VzLlJlbGF0aW9uc2hpcE1hbmFnZXIDAAAAFVN5c3RlbS5EYXRhLkVudGl0eUtleQMAAAACAAAAFAAAAAYEAAAABUZTLUlTDgAAAAkFAAAACQYAAAAFBQAAADNTeXN0ZW0uRGF0YS5PYmplY3RzLkRhdGFDbGFzc2VzLlJlbGF0aW9uc2hpcE1hbmFnZXICAAAABl9vd25lcg5fcmVsYXRpb25zaGlwcwQDKEhvbGlkYXl...]

[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.HiddenFieldPageStatePersister.Load() +266
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium() +88
   System.Web.UI.Page.LoadAllState() +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6704
   System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +245
   System.Web.UI.Page.ProcessRequest() +72
   System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
   System.Web.UI.Page.ProcessRequest(HttpContext context) +58
   ASP.report_vacationchart_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\holidaytracker\ad68c354\56d80455\App_Web_k5s5ajkf.1.cs:0
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +341
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

これが私のGlobal.asax.csです

namespace HolidayTracker {
    public class Global : System.Web.HttpApplication {

        void Application_Start(object sender, EventArgs e) {
            // Code that runs on application startup

        }

        void Application_End(object sender, EventArgs e) {
            //  Code that runs on application shutdown

        }

        void Application_Error(object sender, EventArgs e) {
            // Code that runs when an unhandled error occurs

        }

        void Session_Start(object sender, EventArgs e) {
            // Code that runs when a new session is started
            if (HttpContext.Current.User != null && HttpContext.Current.User is HtUser)
            { 
                HtUser user = (HtUser)HttpContext.Current.User;
                Session["UserId"] = user.UserId;

                Session["User"] = user.LastName+" "+user.FirstName ;


                if (user.HtDepartments.Any() && user.HtDepartments.SingleOrDefault().HtBusinessUnit != null)
                {
                    int BusinessUnitId = user.HtDepartments.First().HtBusinessUnit.BusinessUnitId;
                    Session["BusinessUnnitId"] = BusinessUnitId;
                }


            }
        }

        void Session_End(object sender, EventArgs e) {
            // Code that runs when a session ends. 
            // Note: The Session_End event is raised only when the sessionstate mode
            // is set to InProc in the Web.config file. If session mode is set to StateServer 
            // or SQLServer, the event is not raised.

            //if (Session["UserId"] == null)
            //{
            //    Response.ClearContent();
            //    Response.Write("Not agine");
            //    Response.End();
            //}
            //else
            //{
            //    Response.Write(Session["UserId"].ToString());
            //}
        }

         protected void WindowsAuthentication_OnAuthenticate(Object source, WindowsAuthenticationEventArgs e)
        {
            if (Request.Cookies.Get(Constants.AUTHORIZATION_COOKIE_NAME) != null)
                return;

            String strUserIdentity;
            FormsAuthenticationTicket formsAuthTicket;
            HttpCookie httpCook;
            String strEncryptedTicket;
            AdLookup adLookup = new AdLookup();

            strUserIdentity = e.Identity.Name;

            bool loggedIn = false;
            String email = null;
            String role = null;

            email = strUserIdentity; 
            HtUser userInfo = null;
            if (email != null && email != "")
            {
                userInfo = HtUser.GetByLogin(e.Identity, email);

                if (userInfo != null && userInfo.UserName.Length > 0)
                {
                    loggedIn = true;
                    role = HtUser.GetUserRoleString(userInfo);
                }
                //Checks if user is in domain
                else
                {
                    userInfo = adLookup.GetAdUserByUsername(HtUser.getUserNameFromDomainString(email));
                    if (userInfo != null && userInfo.UserName.Length > 0)
                    {
                        loggedIn = true;
                        role = UserRoles.User;
                    }
                }
            }
            //}

            if (loggedIn)
            {
                formsAuthTicket = new FormsAuthenticationTicket(1, email, DateTime.Now,
                                                                DateTime.Now.AddMinutes(60), false, role);
                strEncryptedTicket = FormsAuthentication.Encrypt(formsAuthTicket);
                httpCook = new HttpCookie(Constants.AUTHORIZATION_COOKIE_NAME, strEncryptedTicket);
                Response.Cookies.Add(httpCook);
                HttpContext.Current.User = userInfo;
            }
            else
            {
                HttpContext.Current.User = null;
            }
        }

    }
}

もっと何かが必要な場合は、お気軽にお問い合わせください!!

助けてくれてありがとう

4

1 に答える 1

0

大きなものではないと思いますが、ビューステートを「通常の」ソリューションに置き換えることを強くお勧めします。Radコンボボックスの値を使用する方が簡単ですが、これは問題の原因に対する実際のソリューションではありません。本当に奇妙だと思うので、ここではエラーは表示されません。私にとっては、すべて問題ないようです。ただし、更新したコードをコメント付きで返送する場合。

あなたが持っていて、問題があるならば、遠慮なく尋ねてください!¨

PS:あなたが解決策を巻くなら私に連絡してください!!

于 2013-03-21T13:37:40.307 に答える