ViewStateException 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示当无法加载或验证视图状态时引发的异常。 此类不能被继承。
public ref class ViewStateException sealed : Exception
[System.Serializable]
public sealed class ViewStateException : Exception
[<System.Serializable>]
type ViewStateException = class
inherit Exception
interface ISerializable
Public NotInheritable Class ViewStateException
Inherits Exception
- 继承
- 属性
- 实现
示例
下面的代码示例演示如何实现一个方法,该方法反序列化 base64 编码的字符串并返回 ICollection 属性设置的集合。 方法 Deserialize 可以引发一个 HttpException 异常,该异常将 ViewStateException 对象作为内部异常。 该示例演示如何捕获 HttpException 异常并从 对象检索属性 ViewStateException 。
private ICollection LoadControlProperties(string serializedProperties)
{
ICollection controlProperties = null;
// Create an ObjectStateFormatter to deserialize the properties.
ObjectStateFormatter formatter = new ObjectStateFormatter();
try
{
// Call the Deserialize method.
controlProperties = (ArrayList)formatter.Deserialize(serializedProperties);
}
catch (HttpException e)
{
ViewStateException vse = (ViewStateException)e.InnerException;
String logMessage;
logMessage = "ViewStateException. Path: " + vse.Path + Environment.NewLine;
logMessage += "PersistedState: " + vse.PersistedState + Environment.NewLine;
logMessage += "Referer: " + vse.Referer + Environment.NewLine;
logMessage += "UserAgent: " + vse.UserAgent + Environment.NewLine;
LogEvent(logMessage);
if (vse.IsConnected)
{
HttpContext.Current.Response.Redirect("ErrorPage.aspx");
}
else
{
throw e;
}
}
return controlProperties;
}
Private Function LoadControlProperties(ByVal serializedProperties As String) As ICollection
Dim controlProperties As ICollection = Nothing
' Create an ObjectStateFormatter to deserialize the properties.
Dim formatter As New ObjectStateFormatter()
Try
' Call the Deserialize method.
controlProperties = CType(formatter.Deserialize(serializedProperties), ArrayList)
Catch e As HttpException
Dim vse As ViewStateException
Dim logMessage As String
vse = e.InnerException
logMessage = "ViewStateException. Path: " + vse.Path + Environment.NewLine
logMessage += "PersistedState: " + vse.PersistedState + Environment.NewLine
logMessage += "Referer: " + vse.Referer + Environment.NewLine
logMessage += "UserAgent: " + vse.UserAgent + Environment.NewLine
LogEvent(logMessage)
If (vse.IsConnected) Then
HttpContext.Current.Response.Redirect("ErrorPage.aspx")
Else
Throw e
End If
End Try
Return controlProperties
End Function 'LoadControlProperties
注解
如果页面加载视图状态信息时发生异常,则页面会创建一个 ViewStateException 对象,并将其作为异常中的 HttpException 内部异常传递。 将 HttpException 重新引发异常,由应用程序处理。
类 ViewStateException 将有关异常的信息存储在 属性中 Message 。 如果请求有权访问属性ServerVariables,则该Message属性包含从 RemoteAddress、、RemotePort、UserAgent、 RefererPersistedState和 Path 属性返回的值;否则,Message该属性包含一般视图状态错误消息。
视图状态异常可能是消息身份验证代码 (MAC) 验证错误的结果。 如果页面属性 enableViewStateMac
设置为 true
,则使用 MAC 标识符对视图状态信息进行编码。 当视图状态信息发回到服务器时,页面会验证编码,以确保用户未更改该编码。 如果页面无法验证视图状态信息上的 MAC 编码,则会将对象引发异常HttpExceptionViewStateException作为内部异常。
要使 MAC 验证成功,在发送和接收视图状态信息时,必须通过同一键对其进行哈希处理。 在 Web 场中,应将每台服务器上的计算机密钥设置为通用密钥。
构造函数
ViewStateException() |
初始化 ViewStateException 类的新实例。 |
属性
Data |
获取键/值对的集合,这些键/值对提供有关该异常的其他用户定义信息。 (继承自 Exception) |
HelpLink |
获取或设置指向与此异常关联的帮助文件链接。 (继承自 Exception) |
HResult |
获取或设置 HRESULT(一个分配给特定异常的编码数字值)。 (继承自 Exception) |
InnerException |
获取导致当前异常的 Exception 实例。 (继承自 Exception) |
IsConnected |
获取一个值,该值指示客户端当前是否连接在服务器上。 |
Message |
获取导致视图状态异常的 HTTP 请求的调试信息。 |
Path |
获取导致视图状态异常的 HTTP 请求的路径。 |
PersistedState |
获取视图状态字符串的内容,读取它时导致了视图状态异常。 |
Referer |
获取页的 URL,该页链接到发生视图状态异常的页。 |
RemoteAddress |
获取导致视图状态异常的 HTTP 请求的 IP 地址。 |
RemotePort |
获取导致视图状态异常的 HTTP 请求的端口号。 |
Source |
获取或设置导致错误的应用程序或对象的名称。 (继承自 Exception) |
StackTrace |
获取调用堆栈上的即时框架字符串表示形式。 (继承自 Exception) |
TargetSite |
获取引发当前异常的方法。 (继承自 Exception) |
UserAgent |
获取导致视图状态异常的 HTTP 请求的浏览器类型。 |
方法
Equals(Object) |
确定指定对象是否等于当前对象。 (继承自 Object) |
GetBaseException() |
当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根本原因。 (继承自 Exception) |
GetHashCode() |
作为默认哈希函数。 (继承自 Object) |
GetObjectData(SerializationInfo, StreamingContext) |
用序列化数据初始化 ViewStateException 类的新实例。 |
GetType() |
获取当前实例的运行时类型。 (继承自 Exception) |
MemberwiseClone() |
创建当前 Object 的浅表副本。 (继承自 Object) |
ToString() |
创建并返回当前异常的字符串表示形式。 (继承自 Exception) |
事件
SerializeObjectState |
已过时.
当异常被序列化用来创建包含有关该异常的徐列出数据的异常状态对象时会出现该问题。 (继承自 Exception) |