Solved

SPSecurity.RunWithElevatedPrivileges

Posted on 2008-10-16
8
3,811 Views
Last Modified: 2010-04-21
Please see the code below.  

I want to change it so that the Sub CreateDoc is a function instead of a sub routine

Function CreateDoc(strfolderName) as guid
...
End Function

But, I cannot pass the function in the SPSecurity.RunWithElevatedPrivileges(AddressOF CreateDoc).

How do I do this so that I can have the createdoc as a function so that it is more flexible

'*** START CURRENT CODE***

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

     SPSecurity.RunWithElevatedPrivileges(AddressOf createdoc)

End Sub
 

Sub Createdoc()

     Dim site As SPSite = New SPSite("http://mysharepointsite/")

     Dim web As SPWeb = site.OpenWeb()

     web.AllowUnsafeUpdates = True

     Dim doclibname As String = "Document Libary2"

     Dim guid As System.Guid = web.Lists.Add(doclibname, "Document Libary2", SPListTemplateType.DocumentLibrary)

    End Sub
 

'*** END CURRENT CODE***
 
 

**BEGIN NEW CODE ***

Function Createdoc(ByVal DocLibName As String) As Guid

        Dim site As SPSite = New SPSite("http://mysharepointsite/")

        Dim web As SPWeb = site.OpenWeb()

        web.AllowUnsafeUpdates = True

        Dim guid As System.Guid = web.Lists.Add(DocLibName, "Document Libary2", SPListTemplateType.DocumentLibrary)

        Return guid

    End Function

Open in new window

0
Comment
Question by:cartch2008
  • 4
  • 4
8 Comments
 
LVL 31

Expert Comment

by:Jamie McAllister MVP
Comment Utility
The MSDN documentation for RunWithElevatedPrivileges states that;

"The secureCode object [that's the arg that specifies your secure method] can be created from any method that is parameterless and returns void"

It's a condition that no arguments are required, and no return value exists.

You therefore cannot turn CreateDoc into a Function without breaking these requirements.
0
 

Author Comment

by:cartch2008
Comment Utility
do you know how I can create a document libary by being able to pass in the document library name I want and getting the id of that document library that was created back?
0
 
LVL 31

Expert Comment

by:Jamie McAllister MVP
Comment Utility
I'm just heading out, so this is a rushed response!

Could you communicate via a Global Variable, Session variables, or capture the event when the doc lib is created?
0
 

Author Comment

by:cartch2008
Comment Utility
I could use a session var, but, there has got to be a better way to do this
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 31

Expert Comment

by:Jamie McAllister MVP
Comment Utility
The last time I wanted to get some data out of an asynchrnous delegate I got it to write the data to Session.

The delegate in your case isn't asynchronous but the lesson holds.

Set up a name value pair. The delegate method will obtain the details of the document library to create from there, and write the creation details to the same entry.

The amount of data involved is very small and will not bloat the Session storage even with loads of users.

I'm looking at the C# code I used now, and it's as easy as it sounds. Sometimes the straightforward solution is the best.
0
 

Author Comment

by:cartch2008
Comment Utility
can you provide an example?
0
 
LVL 31

Accepted Solution

by:
Jamie McAllister MVP earned 500 total points
Comment Utility
This code is way more complicated than you need because it's asynchronous and events are used to write to Session. It could be made as simple as;

string sessionKey = "NewDocLibName|NONE";

Delegate;
foreach (string s in Session.Keys)
{
    if (s.Contains("NONE"))
    {
         Create doclib;
         string newKey = s.Replace("None", "doclibID");
         Session.Remove("s");
         Session.Add(newKey);
    }
}

That is very rough I know, but I'm in the middle of something at home!!
0
 

Author Closing Comment

by:cartch2008
Comment Utility
Thanks!
0

Featured Post

Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

Join & Write a Comment

Pimping Sharepoint 2007 without Server-Side Code Part 1 One of my biggest frustrations with Sharepoint 2007 in the corporate world is that while good-intentioned managers lock down the more interesting capabilities of Sharepoint programming in…
We had a requirement to extract data from a SharePoint 2010 Customer List into a CSV file and then place the CSV file into a directory on the network so that the file could be consumed by an AS400 system. I will share in Part 1 how to Extract the Da…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now