SharePoint Event Handler access Personal Site

%3CLINGO-SUB%20id%3D%22lingo-sub-1350636%22%20slang%3D%22en-US%22%3ESharePoint%20Event%20Handler%20access%20Personal%20Site%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1350636%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20there%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Emy%20logic%20is%20when%20we%20auto-create%20a%20personal%20site%20and%20add%20a%20record%20into%20backend%20custom%20list.%20meantime%20the%20event%20handler%20will%20be%20triggered%20to%20config%20audit%20log%20and%20site%20policy%20in%20each%20personal%20site.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ebut%20sometimes%20I%20ran%20into%20a%20problem%20is%20like%20the%20following%20situation.%20does%20anyone%20have%20any%20idea%20on%20it%3F%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%3C%2FP%3E%3CP%3E%5B12%3A53%20AM%5D%20%5BERROR%5D%20litwareinc%5Cvladime%20Additions%20to%20this%20Web%20site%20have%20been%20blocked.%3C%2FP%3E%3CP%3EPlease%20contact%20the%20administrator%20to%20resolve%20this%20problem.%3CBR%20%2F%3E%5B12%3A53%20AM%5D%20%5BERROR%5D%20at%20Microsoft.SharePoint.SPGlobal.HandleComException(COMException%20comEx)%3CBR%20%2F%3Eat%20Microsoft.SharePoint.Library.SPRequest.SetWebMetainfo(String%20bstrUrl%2C%20WebPropertyBagUpdateFlags%20flags%2C%20Object%20varMetainfo)%3CBR%20%2F%3Eat%20Microsoft.SharePoint.SPWeb.UpdateProperties(StringDictionary%20data)%3CBR%20%2F%3Eat%20Microsoft.SharePoint.SPSite.set_AuditLogTrimmingRetention(Int32%20value)%3CBR%20%2F%3Eat%20OGCIO.ER.UPS.ActiveFeatures.DoWork.%26lt%3B%26gt%3Bc__DisplayClass4_0.%3CACTIVEAUDITLOGS%3Eb__0()%3CBR%20%2F%3Eat%20Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated%20secureCode)%3CBR%20%2F%3Eat%20Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback%20secureCode%2C%20Object%20param)%3CBR%20%2F%3Eat%20Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated%20secureCode)%3CBR%20%2F%3Eat%20OGCIO.ER.UPS.ActiveFeatures.DoWork.ActiveAuditLogs(SPItemEventProperties%20properties)%3C%2FACTIVEAUDITLOGS%3E%3C%2FP%3E%3CP%3E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%5E%3C%2FP%3E%3CP%3Emy%20code%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-csharp%22%3E%3CCODE%3Eprivate%20static%20void%20ActiveAuditLogs(SPItemEventProperties%20properties)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20try%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20Entering%20function%20ActiveAuditLogs%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPSecurity.RunWithElevatedPrivileges(delegate%20()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20SPFieldUrlValue%20sPFieldUrlValue%20%3D%20new%20SPFieldUrlValue(properties.ListItem%5B%22sp_Personal_Site_Location%22%5D.ToString().Trim())%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20%20%20%20%20Connecting%20to%20personal%20site%20%22%20%2B%20sPFieldUrlValue.Url)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20using%20(SPSite%20sPSite%20%3D%20new%20SPSite(sPFieldUrlValue.Url))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sPSite.TrimAuditLog%20%3D%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sPSite.AuditLogTrimmingRetention%20%3D%2030%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sPSite.Audit.AuditFlags%20%3D%20SPAuditMaskType.All%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sPSite.Audit.Update()%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20%20%20%20%20Updated%20to%20Auditlog%20Settings%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20properties.ListItem%5B%22sp_Auditlog_Enabled%22%5D%20%3D%201%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20properties.ListItem.SystemUpdate()%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20%20%20%20%20%22%20%2B%20properties.ListItem%5B%22Title%22%5D.ToString()%20%2B%20%22%20%5Bsp_Auditlog_Enabled%5D%201%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20Leaving%20function%20ActiveAuditLogs%22)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ActiveSiteClosurePolicy(properties)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20catch%20(System.IO.FileNotFoundException)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Thread.Sleep(10000)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteInformation(%22%20%20%20%20%20%20Cannot%20connect%20to%20personal%20site%2C%20reconnecting%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ActiveAuditLogs(properties)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20catch%20(Exception%20eX)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteError(properties.ListItem%5B%22Title%22%5D.ToString()%20%2B%20%22%20%20%22%20%2B%20eX.Message)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Logging.WriteError(eX.StackTrace)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1350636%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDeveloper%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Occasional Contributor

Hi there,

 

my logic is when we auto-create a personal site and add a record into backend custom list. meantime the event handler will be triggered to config audit log and site policy in each personal site.

 

but sometimes I ran into a problem is like the following situation. does anyone have any idea on it??

 

Thanks

 

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

[12:53 AM] [ERROR] litwareinc\vladime Additions to this Web site have been blocked.

Please contact the administrator to resolve this problem.
[12:53 AM] [ERROR] at Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)
at Microsoft.SharePoint.Library.SPRequest.SetWebMetainfo(String bstrUrl, WebPropertyBagUpdateFlags flags, Object varMetainfo)
at Microsoft.SharePoint.SPWeb.UpdateProperties(StringDictionary data)
at Microsoft.SharePoint.SPSite.set_AuditLogTrimmingRetention(Int32 value)
at OGCIO.ER.UPS.ActiveFeatures.DoWork.<>c__DisplayClass4_0.<ActiveAuditLogs>b__0()
at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated secureCode)
at OGCIO.ER.UPS.ActiveFeatures.DoWork.ActiveAuditLogs(SPItemEventProperties properties)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

my code:

private static void ActiveAuditLogs(SPItemEventProperties properties)
        {
            try
            {
                Logging.WriteInformation("  Entering function ActiveAuditLogs");

                SPSecurity.RunWithElevatedPrivileges(delegate ()
                {
                    SPFieldUrlValue sPFieldUrlValue = new SPFieldUrlValue(properties.ListItem["sp_Personal_Site_Location"].ToString().Trim());

                    Logging.WriteInformation("      Connecting to personal site " + sPFieldUrlValue.Url);

                    using (SPSite sPSite = new SPSite(sPFieldUrlValue.Url))
                    {
                        sPSite.TrimAuditLog = true;
                        sPSite.AuditLogTrimmingRetention = 30;
                        sPSite.Audit.AuditFlags = SPAuditMaskType.All;

                        sPSite.Audit.Update();

                        Logging.WriteInformation("      Updated to Auditlog Settings");
                    }

                    properties.ListItem["sp_Auditlog_Enabled"] = 1;
                    properties.ListItem.SystemUpdate();

                    Logging.WriteInformation("      " + properties.ListItem["Title"].ToString() + " [sp_Auditlog_Enabled] 1");
                    Logging.WriteInformation("  Leaving function ActiveAuditLogs");

                    ActiveSiteClosurePolicy(properties);
                });
            }
            catch (System.IO.FileNotFoundException)
            {
                Thread.Sleep(10000);

                Logging.WriteInformation("      Cannot connect to personal site, reconnecting");
                ActiveAuditLogs(properties);
            }
            catch (Exception eX)
            {
                Logging.WriteError(properties.ListItem["Title"].ToString() + "  " + eX.Message);
                Logging.WriteError(eX.StackTrace);
            }
        }

 

0 Replies