Asp.net 如何创建在Web服务器上保存视图和控制状态的PageStatePersister对象
在阅读一本书时,我设法创建了一个类,该类被用作基类,用于重写Load和Save方法,以提取视图状态信息并将其保存到服务器。然而,在本书中,作者建议转到以下链接并查看示例以执行以下操作: 您可以使用页面适配器,而不是使用页面基类。这将改变 所有页面的功能,而无需更改其基类。那太好了 如果要在服务器上存储所有页面的ViewState。发现 了解如何使用的GetStatePersister方法为所有页面存储ViewState PageAdapter类,请访问: 我所要做的就是找到一种保存ViewState的方法,而不必手动更改每个页面上的基类 我得到以下错误:Asp.net 如何创建在Web服务器上保存视图和控制状态的PageStatePersister对象,asp.net,c#-4.0,Asp.net,C# 4.0,在阅读一本书时,我设法创建了一个类,该类被用作基类,用于重写Load和Save方法,以提取视图状态信息并将其保存到服务器。然而,在本书中,作者建议转到以下链接并查看示例以执行以下操作: 您可以使用页面适配器,而不是使用页面基类。这将改变 所有页面的功能,而无需更改其基类。那太好了 如果要在服务器上存储所有页面的ViewState。发现 了解如何使用的GetStatePersister方法为所有页面存储ViewState PageAdapter类,请访问: 我所要做的就是找到一种保存ViewSta
[ArgumentNullException: Value cannot be null.
Parameter name: stream]
System.IO.StreamWriter..ctor(Stream stream, Encoding encoding, Int32 bufferSize, Boolean leaveOpen) +10409245
System.IO.StreamWriter..ctor(Stream stream) +30
dev.StreamPageStatePersister.Save() in a:\Project\Application\Web\dev\StreamPageStatePersister.cs:57
System.Web.UI.Page.SavePageStateToPersistenceMedium(Object state) +108
System.Web.UI.Page.SaveAllState() +659
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1225
以下是执行此操作所引用的链接:
StreamPageStatePersister.cs代码
MyPageAdapter.cs代码
最后,在浏览器文件中:
<browsers>
<browser id="NewBrowser" parentID="Mozilla">
<identification>
<userAgent match="Unique User Agent Regular Expression" />
</identification>
<capture>
<userAgent match="NewBrowser (?'version'\d+\.\d+)" />
</capture>
<capabilities>
<capability name="browser" value="My New Browser" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
<browser refID="Mozilla">
<capabilities>
<capability name="xml" value="true" />
</capabilities>
<controlAdapters>
<adapter
controlType="System.Web.UI.Page"
adapterType="dev.MyPageAdapter" />
</controlAdapters>
</browser>
</browsers>
我认为您应该为其他浏览器确定适配器。你能试试吗 adapterType=“Samples.AspNet.CS.MyPageAdapter”/>
namespace dev {
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
[AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
public class MyPageAdapter : System.Web.UI.Adapters.PageAdapter
{
public override PageStatePersister GetStatePersister()
{
return new dev.StreamPageStatePersister(Page);
}
} }
<browsers>
<browser id="NewBrowser" parentID="Mozilla">
<identification>
<userAgent match="Unique User Agent Regular Expression" />
</identification>
<capture>
<userAgent match="NewBrowser (?'version'\d+\.\d+)" />
</capture>
<capabilities>
<capability name="browser" value="My New Browser" />
<capability name="version" value="${version}" />
</capabilities>
</browser>
<browser refID="Mozilla">
<capabilities>
<capability name="xml" value="true" />
</capabilities>
<controlAdapters>
<adapter
controlType="System.Web.UI.Page"
adapterType="dev.MyPageAdapter" />
</controlAdapters>
</browser>
</browsers>