1 /// <summary>
2 /// Enables a share point call from anywhere by creating your own context.
3 /// </summary>
4 /// <param name="siteCollectionUrl">The site collection URL where you want to create the context.</param>
5 /// <example>
6 /// EnableSharePointCallByCreatingYourOwnContext("http://mysite.com.au");
7 /// </example>
8 private void EnableSharePointCallByCreatingYourOwnContext(string siteCollectionUrl)
9 {
10 using (var site = new SPSite(siteCollectionUrl))
11 {
12 using (var web = site.OpenWeb())
13 {
14 // assumes that context does not exists
15 var contextCreated = false;
16
17 // if it does not exists, then create it
18 if (HttpContext.Current == null)
19 {
20 contextCreated = true;
21 // creates a request object for the current web URL
22 var request = new HttpRequest(string.Empty, web.Url, string.Empty);
23
24 // open the pipe to output the http stream
25 HttpResponse httpResponse;
26 using (var responseWriter = new StringWriter())
27 {
28 httpResponse = new HttpResponse(responseWriter);
29 }
30
31 // creates the context
32 HttpContext.Current = new HttpContext(request, httpResponse);
33
34 // HttpHandlerSPWeb is a the property name where you must assign the current web
35 // in order to associate the newly created context to sharepoint
36 if (HttpContext.Current.Items != null)
37 {
38 HttpContext.Current.Items["HttpHandlerSPWeb"] = web;
39 }
40 }
41
42 // ...
43 // do whatever you want to do here
44 // ...
45
46 // return the application context to the original state prior the execution
47 if (contextCreated)
48 {
49 HttpContext.Current = null;
50 }
51 }
52 }
53 }
See you later
By Edge Pereira
Hm hm.. that's very interessting but frankly i have a hard time determining it... I'm wondering what others have to say....
ReplyDeleteEdge
ReplyDeleteJust wanted to say "Thank you!!" for the sample. We used it to build a free Windows Form utility that lets you look at SharePoint permissions in cool ways. We are working on a WebPart to do a similar thing but the Windows Form app was easier due to prior work. Check out the utility at the following location:
http://securitay.com/Support/productdownloads.aspx