序列化数据无效

时间:2011-06-21 09:45:00

标签: asp.net

当我将站点部署到负载平衡服务器时,我遇到了一些问题。堆栈跟踪如下。任何帮助将不胜感激

  

[FileNotFoundException:无法加载   文件或程序集'App_Web_ujlndqyx,   版本= 0.0.0.0,文化=中立,   PublicKeyToken = null'或其中一个   依赖。系统找不到   指定的文件。]
  System.RuntimeTypeHandle._GetTypeByName(字符串   name,Boolean throwOnError,Boolean   ignoreCase,Boolean reflectionOnly,   StackCrawlMark&安培; stackMark,布尔   loadTypeFromPartialName)+0
  System.RuntimeTypeHandle.GetTypeByName(字符串   name,Boolean throwOnError,Boolean   ignoreCase,Boolean reflectionOnly,   StackCrawlMark&安培; stackMark)+54
  System.RuntimeType.PrivateGetType(字符串   typeName,Boolean throwOnError,   Boolean ignoreCase,Boolean   reflectionOnly,StackCrawlMark&   stackMark)+39
  System.Type.GetType(String typeName,   Boolean throwOnError)+60
  System.Web.UI.ObjectStateFormatter.DeserializeType(SerializerBinaryReader   读者)+201
  System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader   读者)+955
  System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader   读者)+395
  System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader   读者)+205
  System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader   读者)+218
  System.Web.UI.ObjectStateFormatter.DeserializeValue(SerializerBinaryReader   读者)+205
  System.Web.UI.ObjectStateFormatter.Deserialize(流   inputStream)+163

     

[ArgumentException:序列化   数据无效。]
  System.Web.UI.ObjectStateFormatter.Deserialize(流   inputStream)+228
  System.Web.UI.ObjectStateFormatter.Deserialize(字符串   inputString)+303
  System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(字符串   serializedState)+5
  System.Web.UI.Util.DeserializeWithAssert(IStateFormatter   formatter,String serializedState)+37   System.Web.UI.HiddenFieldPageStatePersister.Load()   116

     

[ViewStateException:无效   视图状态。客户IP:114.130.35.83     端口:2161用户代理:Mozilla / 5.0   (Windows NT 6.1; WOW64; rv:2.0.1)   Gecko / 20100101 Firefox / 4.0.1     ViewState的:   / wEPDwUJMzI0MDgwMzY4DxYCHgtDdXJyZW50VmlldwspbE9yZGVySm91cm5leURlZmF1bHQrQ3VycmVudFZpZXdFbnVtLCBBcHBfV2ViX3VqbG5kcXl4LCBWZXJzaW9uPTAuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAIWAmYPZBYCAgMPZBYGAgMPFgIeCWlubmVyaHRtbAXSBDx1bD4KPGxpPjxhIGNsYXNzPSJzZWxlY3RlZCIgaHJlZj0iaHR0cHM6Ly9idXNpbmVzcy5idC5jb20vIj5CdXNpbmVzcyBob21lPC9hPjwvbGk + CjxsaSBjbGFzcz0iaGFzX2Ryb3BfZG93biBzZWxlY3RlZCI + IDxhIGhyZWY9Imh0dHBzOi8vYnVzaW5lc3MuYnQuY29tL3Byb2R1Y3RzLWFuZC1zZXJ2aWNlcy8iPlByb2R1Y3RzICZhbXA7IHNlcnZpY2VzPC9hPiA8YSBjbGFzcz0iZHJvcF9kb3duIiBocmVmPSIjZm9vdGVyIj5WaWV3IHByb2R1Y3RzIGFuZCBzZXJ2aWNlcyAocG9wLXVwKTwvYT4gPC9saT4KPGxpPjxhIGhyZWY9Imh0dHBzOi8vYnVzaW5lc3MuYnQuY29tL3BhY2thZ2VzLyI + UGFja2FnZXM8L2E + PC9saT4KPGxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuaW5zaWdodC5idC5jb20vIj5CdXNpbmVzcyBpbnNpZ2h0PC9hPjwvbGk + CjxsaT48YSBocmVmPSJodHRwczovL3d3dy5idC5jb20vY21wL3B1YmxpYy9odWIuZG8iPllvdXIgYWNjb3VudD ...]

     

[HttpException(0x80004005):状态   信息对此页面无效   并且可能已损坏。]
  System.Web.UI.ViewStateException.ThrowError(例外   inner,String persistedState,String   errorPageMes​​sage,布尔值   macValidationError)+118
  System.Web.UI.ViewStateException.ThrowViewStateError(例外   inner,String persistedState)+13
  System.Web.UI.HiddenFieldPageStatePersister.Load()   +222 System.Web.UI.Page.LoadPageStateFromPersistenceMedium()   +107 System.Web.UI.Page.LoadAllState()+43   System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean   includeStagesAfterAsyncPoint)+6230
  System.Web.UI.Page.ProcessRequest(布尔   includeStagesBeforeAsyncPoint,Boolean   includeStagesAfterAsyncPoint)+247
  System.Web.UI.Page.ProcessRequest()   +79 System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext   上下文)+23
  System.Web.UI.Page.ProcessRequest(HttpContext的   上下文)+111
  ASP.toj_application_orderjourney_default_aspx.ProcessRequest(HttpContext的   上下文)   C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \临时   ASP.NET   文件\ ROOT \ 82a64fa9 \ 62e4fa0 \ App_Web_fewmyzsj.0.cs:0   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +406 System.Web.HttpApplication.ExecuteStep(IExecutionStep   步,布尔& completedSynchronously)   76

3 个答案:

答案 0 :(得分:2)

将放置在viewstate中的类移动到单独的程序集中,而不是移动到Web项目程序集中。 如果不这样做,则动态编译aspx代码将生成临时名称,所有Web服务器都不同

答案 1 :(得分:2)

我有同样的问题,但现在设法治愈它。我们正在运行一个包含2台服务器的Web场。机器键匹配。我认为我的问题与使用Oracle的会话状态软件有关。当我把任何对象,一个简单的列表,在视图状态中出错时。一旦它在其他服务器上回送服务而不是原始获取服务,我就会收到此错误。

我注意到两个有趣的项目:

  1. 在服务器上提供请求时无法找到的文件名 A,在服务器A上不存在,但它是文件的名称 服务器B.文件名的不同之处在于它添加的哈希值 结束,

      

    App_Web_form_create_excel_data_template.aspx.cdcab7d2.wpiiisfb

    服务器A上的

      

    App_Web_form_create_excel_data_template.aspx.cdcab7d2.lkw6qbsg.dll

    服务器B上的

    。每个服务器上的.compile文件指向正确的文件。

  2. oracle数据库中的会话状态oracle存储成为 腐败和无法使用。它的锁定列从未得到1 清除。我必须删除该行或删除asp.net会话 来自浏览器的cookie。

  3. 然后,由于Microsoft知识库文章Troubleshooting the "View state is invalid" error with ASP.NET,我找到了解决方案。

    我已将变量声明为enum并将其保存在viewstate中。我假设枚举被视为动态类,因此文章指出源文件的名称用于序列化作为枚举的viewstate项目!由于源文件的名称在构成服务器场的2个Web服务器上不同,因为它在一个服务器上序列化其值并尝试在另一个服务器上反序列化其值时发生错误!

答案 2 :(得分:0)

您的内部异常约为ViewState但有关未找到文件的异常:

[FileNotFoundException: Could not load file or assembly 'App_Web_ujlndqyx, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.]

这意味着您的服务器尝试解析某些类类型,但未找到任何相应的类型。 试着检查一下:

  1. 我认为您已经在项目中链接了一些库,并将其部署在一台计算机上,而不是部署在您的服务器上。
  2. 也许GAC的某些dll缺失
  3. 可能.NET版本的IIS设置与本地计算机不同,或者您只是在具有不同.NET版本的计算机上运行该应用程序