Blank browser pages for Audit Log Reports in SP2007
Symptoms
Perhaps your audit log reporting functionality was working great last month but this month you're only seeing blank, empty pages in your browser. You can't run any reports successfully anymore in your MOSS 2007 farm. You can make it to SITE ACTIONS and then on to AUDIT LOG REPORTS.
You see all the links you're supposed to see at Reporting.aspx.
But you can't do anything with those links anymore.
Clicking any of these links should open a spreadsheet in Excel or, if Excel isn't installed on the client machine, it should render in the browser with some valid xml data that looks something like this:
But after installing the .net update 2905247/2894844/2894852/2894851/2894847/2894843 and rebooting things changed.
Now you just see blank pages whenever you click any of the links.
You can click the Run a Custom Report link and get a page but you won't be able to run any existing reports or create any new reports.
You'll just get a blank page.
Troubleshooting
Nothing interesting seems to show up in the SharePoint diagnostic/ULS logs.
But reproducing the problem while monitoring the application pool with a debugdiag crash rule (that is configured to log CLR exceptions) shows some great hints.
Type: System.Web.HttpException
Message: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. https://go.microsoft.com/fwlink/?LinkID=314055
Type: System.Web.UI.ViewStateException
Message: NOT_FOUND
Stack:
System.Web.UI.HiddenFieldPageStatePersister.Load()
System.Web.UI.ViewStateException.ThrowError(System.Exception, System.String, System.String, Boolean)
System.Web.UI.ObjectStateFormatter.Deserialize(System.String)
System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[], Byte[], Int32, Int32, Int32 ByRef)
System.Web.UI.ObjectStateFormatter.Deserialize(System.String)
System.Web.UI.Util.DeserializeWithAssert(System.Web.UI.IStateFormatter, System.String)
System.Web.UI.HiddenFieldPageStatePersister.Load()
System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
System.Web.UI.Page.LoadAllState()
System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)
System.Web.UI.Page.ProcessRequest(Boolean, Boolean)
System.Web.UI.Page.ProcessRequest()
System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)
ASP._layouts_runreport_aspx.ProcessRequest(System.Web.HttpContext)
System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
Type: System.Web.HttpException
Message: Unable to validate data.
Stack:
RetAddr Call Site
System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[], Byte[], Int32, Int32, Int32 ByRef)
System.Web.UI.ObjectStateFormatter.Deserialize(System.String)
System.Web.UI.Util.DeserializeWithAssert(System.Web.UI.IStateFormatter, System.String)
System.Web.UI.HiddenFieldPageStatePersister.Load()
System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
System.Web.UI.Page.LoadAllState()
System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean)
System.Web.UI.Page.ProcessRequest(Boolean, Boolean)
System.Web.UI.Page.ProcessRequest()
System.Web.UI.Page.ProcessRequest(System.Web.HttpContext)
ASP._layouts_runreport_aspx.ProcessRequest(System.Web.HttpContext)
System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef)
System.Web.HttpApplication+ApplicationStepManager.ResumeSteps(System.Exception)
System.Web.HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext, System.AsyncCallback, System.Object)
System.Web.HttpRuntime.ProcessRequestInternal(System.Web.HttpWorkerRequest)
System.Web.HttpRuntime.ProcessRequestNoDemand(System.Web.HttpWorkerRequest)
System.Web.Hosting.ISAPIRuntime.ProcessRequest(IntPtr, Int32)
DetailID = 2
Count: 1
Type: System.Web.HttpException
Message: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. https://go.microsoft.com/fwlink/?LinkID=314055
Root Cause
By design, the installation of update 2905247/2894844/2894852/2894851/2894847/2894843 enables the use of ViewStateMac. Unfortunately this causes some problems for WSS-3.0/MOSS-2007 site collection audit log reports.
Solution/Workarounds
Some have uninstalled the update to get past this problem. I am not recommending that. This is an important security patch to have. Besides, some future .net patch will just put you back in the same place.
Others have disabled AspNetEnforceViewStateMac in the registry to get around this problem. I am not recommending that either. It's important for security reasons to have it enabled. (See https://blogs.msdn.com/b/webdev/archive/2014/09/09/farewell-enableviewstatemac.aspx.)
Disabling AspNetEnforceViewStateMac (followed by an IISRESET) does take the blank-page symptoms away. In a lab environment I opened up regedit, searched for AspNetEnforceViewStateMac, found it in two places, and changed the value of 1 (enabled) to 0 (disabled).
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AspNetEnforceViewStateMac (This is the only one you probably would want to test with.)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727\AspNetEnforceViewStateMac (This might be good to keep in mind if your application pool is running in 32-bit mode for some reason)
Restart IIS to iron in the changes.
Mainstream support for WSS 3.0/MOSS 2007 ended over two years ago. (See https://support2.microsoft.com/lifecycle/search/default.aspx?sort=PN&alpha=SharePoint+Server+2007&Filter=FilterNO.) So it's not clear at this time if a design change can or will be made. If such a fix/change is produced, I'll try to make it known here.
Otherwise perhaps the time has come to stop trying to get audit reports and start speeding up the pace towards going to either SharePoint Online (O365) or SharePoint 2013!
More Information
https://blogs.msdn.com/b/webdev/archive/2014/09/09/farewell-enableviewstatemac.aspx - Farewell, EnableViewStateMac!
https://support2.microsoft.com/kb/2915218 - Resolving view state message authentication code (MAC) errors
[Note that this article won't help if the problem began when the patch was installed.]
Additional Keywords:
Content modifications Content_modifications.xml
Content type and list modifications Content_type_and_list_modifications.xml
Content viewing Content_viewing.xml
Deletion Deletion.xml
Run a custom report Run_a_custom_report.xml
Expiration and Disposition Expiration_and_Disposition.xml
Policy modifications Policy_modifications.xml
Auditing settings Auditing_settings.xml
Security settings Security_settings.xml
RunReport.aspx, SharePoint 2007,
https://support.microsoft.com/kb/2905247 - Microsoft security advisory: Insecure ASP.NET site configuration could allow elevation of privilege
Microsoft .NET Framework 3.5.1 2894844 Description of the security update for the .NET Framework 3.5.1 on Windows 7 Service Pack 1 and Windows Server 2008 R2 Service Pack 1: December 10, 2013
Microsoft .NET Framework 3.5 2894852 Description of the security update for the .NET Framework 3.5 on Windows 8.1 and Windows Server 2012 R2: December 10, 2013
2894851 Description of the security update for the .NET Framework 3.5 on Windows 8 and Windows Server 2012: December 10, 2013
Microsoft .NET Framework 2.0 2894847 Description of the security update for the .NET Framework 2.0 Service Pack 2 on Windows Vista Service Pack 2 and Windows Server 2008 Service Pack 2: December 10, 2013
2894843 Description of the security update for the .NET Framework 2.0 Service Pack 2 on Windows Server 2003: December 10, 2013
Dude, my audit reports don't work! Auditing reports blank. Blank auditing reports. Blank audit report. White browser. Empty browser window.
Comments
Anonymous
November 13, 2014
If anyone else out there is hitting this problem, let me know please by leaving a comment. Do NOT leave any information here that could help identify your corporation though. Also consider opening a support ticket with Microsoft to see workarounds or fixes.Anonymous
November 13, 2014
Hi Christopher,I have this problem in one of my company's customer environment, thank you for posting this article, I've been searching for solution for long time. Will definitely give it i try and post back whether it helped or not.Anonymous
November 14, 2014
I ran into the same problem a few days ago. Thanks for the post.Anonymous
November 23, 2014
Hi Christopher,Same problem happen to us, Only from one server we are able to fetch report rest all the server on which user hit is going facing blank page issue.Your help is highly appreciated.Thank you in advanceAnonymous
December 01, 2014
Thanks for the comments, All. I don't have any updates yet but its possible there still might be something in the works. I'll let you know if and when I hear something.Anonymous
December 02, 2014
Running into this issue as well. Disabling AspNetEnforceViewStateMac in registry does resolve the issue. Thank you for the information. Will watch this page for any updates.Anonymous
December 29, 2014
we have this problem also. Waiting for your updates.Anonymous
January 27, 2015
Witnessed exactly the same problem today following some Windows Updates - make the registry changes fixed the problem.Thanks for saving me a lot of aggro!Anonymous
February 05, 2015
We are experiencing this issue as well.Anonymous
February 08, 2015
Yes seeing this for several environments following these updates. As you note, the kb article doesn't fix this issue :-(Anonymous
February 16, 2015
Run into the same problem, changing the AspNetEnforceViewStateMac to 0 resolve the issue.Thanks for your resolution.Anonymous
March 23, 2015
I recently heard that they're still considering a fix for it. So there is still hope. But there is no certainty about it yet either.Anonymous
January 18, 2016
Christopher, any updates for this issue? Our reports worked this time last year but are no longer working.Anonymous
February 17, 2016
Kyle, I'm no longer with Microsoft Corp so I no longer have an inside channel to ask though. I recommend opening a support case with the SharePoint Admin team and refer them to this blog. A bug was filed on it so they shouldn't charge you for the case. Good luck!Anonymous
February 17, 2016
I just got confirmation from a reliable source that says this will not be fixed in SP2007.