DNN store Viewstate in disk revised

From last post: DNN DotNetNuke Viewstate Optimization, I have show you how to save the viewstate in disk by modifying the DotNetNuke framework. But there is a disadvantage, if you upgrade your DotNetNuke to a new version, you have to modify the files again. That is not the right solution, I have googled a lot and check the dotnetnuke's source file. And I found this:

 

Protected Overrides ReadOnly Property PageStatePersister() As System.Web.UI.PageStatePersister
            
Get
                
'Set ViewState Persister to default (as defined in Base Class)
                Dim _persister As PageStatePersister = MyBase.PageStatePersister
                
If Not DotNetNuke.Common.Globals.HostSettings("PageStatePersister") Is Nothing Then
                    
Select Case DirectCast(DotNetNuke.Common.Globals.HostSettings("PageStatePersister"), String)
                        
Case "M"
                            _persister
= New CachePageStatePersister(Me)
                        
Case "D"
                            _persister
= New DiskPageStatePersister(Me)
                        
Case "S"
                            _persister
= New SessionPageStatePersister(Me)
                    
End Select
                
End If
                
Return _persister
            
End Get
        
End Property

In the Select, DNN only handle "M", "D", "S", so that means, If we choose store viewstate in Page, DNN will use the default PageStatePersister, which can be modified by using PageAdapter.

 

Below is the PageAdapter:

 

public class HCPageAdapter : PageAdapter
    {
        
public override PageStatePersister GetStatePersister()
        {
            
return new XmlPageStatePersister(base.Page);
        }
    }

 

And we need create a .Browser file in App_Browser folder:

 

<browsers>
    
<browser refID="Default">
      
<controlAdapters>
        
<adapter controlType="DotNetNuke.Framework.PageBase"
                 adapterType
="HC.DNN.Services.ViewState.HCPageAdapter" />
      
</controlAdapters>
    
</browser>
</browsers>

You can download the source file here:

 

How to deploy this:

1. Upload .Browser file to App_Browser folder

2. Upload .dll file to Bin folder

3. In DNN host setting: set viewstate to "Page". Done.

Subscribe
Rss Feed Email Follow Us on Twitter
Search