This post i will walkthrough the steps required to create and deploy asp.net web application under _layouts folder in sharepoint 2007. Also note that this application is different than the MSDN article to build asp.net 2.0 website in sharepoint 2007, since this article only works if you copy the whole project ( with .cs files ) under website folder in layouts directory which is not recommended and not a best practice.
In this article i will go through the steps to create a web application with sharepoint master page and to deploy the web application dll in GAC as well.
1) Open your VS 2008, and select ASP.NET web application template. 2) Add Microsoft.Sharepoint.dll in your project references. 3) Create a folder in your project called _layouts, the purpose of this project is to have a dummy masterpage that let you develop your custom pages with sharepoint site master page and the pages will pick the site masterpage at runtime. 4) To get a dummy application.master, get it from this link: http://cid-4bc94054914a6469.skydrive.live.com/self.aspx/Blog%20Code/application.master
5) Right click on your project to sign your assembly of the web application, since this dll will be in GAC.
6) Open the default.aspx page that you have and update the following:
To download the sample page, here is the link: http://cid-4bc94054914a6469.skydrive.live.com/self.aspx/Blog%20Code/home.aspx
Note: all your pages have to have 3 content controls that mimics the contentplaceholder that you have on your custom masterpage or sharepoint out of the box master page.
Tip: to get the public key token, just drag and drop your dll in GAC and right click on your assembly in your gac folder ( c:\windows\assembly) and you will get the public key token that you need to paste on all your pages.
7) To change the master page to your pages to the sharepoint master page, write the following method on your .cs file of your page:
SPWeb Web = SPContext.Current.Web; this.MasterPageFile = Web.MasterUrl; }
8) One you are done, publish your website using publishing feature on your web application, right click on the web application and click on publish.
set the url of the web application to be under LAYOUTS folder in sharepoint.
9) Last, Deploy the web application dll file in GAC, you can create a feature for that, for development purposes, just drag and drop the webapplication.dll in your GAC under c:\windows\assembly folder.
10) Navigate to your test page and will see it works perfect, url for example : http://SHAREPOINTSITE/_layouts/WEBSITEFOLDER/home.aspx
In this post, I’d like to add more updates/Tips to the posted MSDN article with title:
“Deploying ASP.NET Web Applications in the Windows SharePoint Services 3.0 _layouts Folder” Article url: http://msdn.microsoft.com/en-us/library/cc297200.aspx
The article is going to work fine if you are building asp.net ( with limitations ) that is targeting .NET framework 2.0, if you are trying to build and follow the steps on an ASP.NET application that is targeting .NET Framework 3.0 or 3.5 ( specially if your application has AJAX and Silverlight modules on it) then here is the changes/Tips that you might tackle and change:
1) The article doesn’t tell you how to have a page that’s rendered correctly in your VS.NET while development, the trick on this, do the following: a) create a folder in your asp.net application called _layouts, and copy the application.master file from LAYOUTS folder and paste it on _layouts folder. b) Now the page will render correctly in VS.NET. c) You won’t be able to build your website since the application.master has a lot of usercontrols and components that doesn’t exist in your application. d) to fix this, simply remove all usercontrols that you have in the application.master and you then be able to compile and build your website. e) we added application.master just because to have our pages render correctly in our VS.NET IDE and to enrich the design experience of our pages and user controls. d) As a best practices, no need to hard code the master page name in your code, simply replace the code in the OnPreInit event to the following:
// Old code in the article: SPWeb Web = SPContext.Current.Web; string strUrl = Web.ServerRelativeUrl+”/catalogs/masterpage/GamePoint_ThemeBlueDefault.master”; this.MasterPageFile = strUrl;
// New code: SPWeb Web = SPContext.Current.Web; this.MasterPageFile = Web.MasterUrl;
The above code will assign the the site masterpage to the custom page. and no need to specify the name of the master page, and this add a major flexibility to your solution specially if you provide your client with different custom master page in your sharepoint site ( as in my case ).
2) The article is telling you just to comment the authentication section in the web.config, this is not true 100%, what you suppose to do is to remove any attribute that exist on the web.config of the sharepoint site otherwise you will get duplicate entry error. To fix this:
a) remove any duplicate entries on your web.config file from your asp.net application.
b) no need to have web.config in your site if you don’t have any custom entries on your site. and in this case, your site will run under the configuration of the sharepoint site that exists in sharepoint site folder.
With these 2 tips you will be able to build any asp.net 2.0/3.0/3.5 application with no limitations and make use of the full functionality of VS.NET Design tools.
I want to share some ideas and tips on masterpage changes in regard of using Master pages, css and ribbons in Sharepoint 2010:
1) In sharepoint 2007, when you develop custom pages under _layouts folder, those pages doesn’t take the site master page, you have to configure them in your solution to reference a customized master page. while in Sharepoint 2010 one of the good enhancements is that the site master page is applied on your custom pages under layouts folder. Good Feature to know.
2) To set the master page in your custom pages in SharePoint 2010 use the following lines of code:
We have an impressive lineup of sessions you can see below. We have not yet made up a schedule, but we just wanted to let all of you know which of your talks were selected with plenty of time to prepare. We expect to have the schedule firmed-up by next weekend. We have some important details to share with you.
Location The Code Camp is on Saturday June 12th from 8:30am to 5:45pm at the Microsoft Office Facilities.
The address is: 12012 Sunset Hills Road, Reston, VA 20190
Ask the Experts During lunch, we are running an Ask the Experts where you’re the experts! We will be grouping the speakers into four groups based upon session topic. Each group will then be able to entertain questions from attendees.
Speaker Dinner We are holding a post-code camp dinner at Clyde’s in Reston. It’s within easy walking distance from the code camp. Please let me know if you will be attending so we can make reservations.
Speaker Selections Please note if you received this e-mail, then at least one of your talks was selected. If you do not see your name on the list below, then please let me know.
Chagoury, Antonio Building an iPhone web app for your DotNetNuke module Ames, Ned If Software Modules Were People Blumenauer, John Building Extensible Silverlight Apps with MEF Busse, Chris Promotion & Privacy (or lack thereof): Working with the new Facebook APIs Cochran, Joel An Introduction to Expression Blend del Mundo, Paolo Writing your first Windows 7 Phone App Elzoghbi, Mostafa SharePoint 2010 Development Griffin, Kevin jQuery From The Ground Up Hazzard, Kevin Better Contracts. Better Code. Hoerster, David Introduction to WCF Data Services and OData Lele, Vishwas Architecting for Azure Makogon, David Azure: The Essential Setup Guide Michelotti, Steve ASP.NET MVC 2 Miller, John Building Facebook Apps with Windows Azure Nguyen, Tuan Intro to BDD and SpecFlow Rushdan, Habeeb Intro to Object Oriented Programming in .NET via C# Schoolcraft, Jeff Rails FTW Sizemore, John Source Control You Won’t Hate: SVN and Git Snowman, Geoff The Service Bus in the Sky – How to Connect Applications across Firewall Boundaries Using Windows Azure AppFabric Van Lowe, Van Building Silverlight 4 Business Application Using WFC RIA Services
Thanks and we’ll be seeing you in just a short few weeks at NoVa Code Camp!
Sign up : http://novacodecamp.org/
Latest updates: follow @novacodecamp or hashtag: #NOVACC
I was trying to create an external list in sharepoint 2010 and i was getting this error: “Access Denied by Business Data Connectivity” when i am trying to view the external list in my sharepoint 2010 site.
The fix for this problem is easy since the cause of this error is : The business data connectivity service is not configured in sharepoint- permissions are not set !
What we will do is to configure the BDC service by set the security permissions on it:
1) open central administrations. 2) select application management. 3) select business data connectivity service. 4) Hover on your application and select set permission from the menu. 5) Add users that will have the permissions to use this BDC Application and assign the required permissions. 6) Click Ok.
VS 2010 has shipped with wide variety of project types for asp.net/sharepoint developers, in this post i will clarify the use for the most common project types and items used for building sharepoint 2010 solutions:
1) Import Sharepoint solution package: this project template allows you to import existing wsp files that you developed before.
2) Import Reusable workflows: this template allows you to extend created/developed workflows using SPD in VS 2010. VS 2010 workflows provide more capabilities that doesn’t exist in the SPD workflow designer. Once you are done, you can also deploy using VS 2010.
Note: once you modify the imported workflows from SPD you wont be able to open it back using SPD.
3) State Machine workflow: in this template you can create state machine workflows using VS 2010.
4) Application page: Use this page to add any asp.net pages in sharepoint sites.
5) User Control: this is a regular ascx user control that you can drag-drop it on your application pages.
6) Web part: this is a normal webpart that we use to develop since MOSS 2007.
7) Visual Web part: This is a visual webpart that you dont need to render it is interface, it contains a webpart and a usercontrol item.
Single Sign On (SSO) one of the most important feature to connect to external systems from SharePoint, In SharePoint 2007 You have to configure SSO service and set the required username/password to connect to external systems.
In SharePoint 2010 the new name for SSO is SSS: Secure Store Service.
Here is some general consideration about SSS in SharePoint 2010: 1) SSS is a service in SharePoint 2010 that runs on the application server. 2) SSS provides a DB that store credentials for ApplicationIDs. 3) Application ID : is your token to access the external application, the token might represents one/group of users. 4) It is recommended to run SSS on separate application pool and on separate application server. 5) Use different SQL Server to store SSS credentials information. 6) You create SS Target Application Types: a) Group: map group of people to access this external app. b) Individual: map individuals to access this external app.
This is a general post about SSO – SSS, following posts will explain more….
I was trying to connect to a sharepoint list in PPS designer 2010 and SharePoint 2010 and i’m getting this error:
I checked the eventlog and i found the following error:
The following data source cannot be used because PerformancePoint Services is not configured correctly.
Data source location: http://PORTAL/BI/Data Connections for PerformancePoint/1_.000 Data source name: New Data Source
The PerformancePoint Services Unattended Service Account is not set. The setting is located in “Manage service applications” in SharePoint Central Administration under the PerformancePoint Services management page.
I opened the central administration – > Application management and select manage service applications.
Select performance point services application and click on pps application settings link and try to set the secure store service (sss). set username and password and hit ok.
You might get this error message:
The Microsoft Secure Store Service application Secure Store Service failed to retrieve the master secret key. The error returned was: ‘Unable to obtain master key.’. For more information, see the Microsoft SharePoint Products and Technologies Software Development Kit (SDK).
To fix it, go to the manage service applications and select secure store service and click on generate new key and ok.
Go back to the PPS and set the username/password PPS service account.
If you are trying to find out “site collection features” link in the site setting page in sharepoint 2010 and you couldn’t find out the site administration section at all this is because the logged in user doesn’t have a permission as a site collection administrator, open central administration site:
1) Select application management tab. 2) Click on change site collection administrators link under site collection tab. 3) add your self as site collection administrator. 4) refresh the site settings page and you will see all site collection administration section.
“File Not Found” is one of the most confusing errors that can be caused by a lot of reasons, In my case i have the site is up and running except my custom SharePoint 2007 pages under layout folder.
I developed a custom page which uses WCF REST API classes, and it is working fine on my development VM and once i moved wsp to the staging vm i was getting “File Not Found” and after turn off the customerrors and enable stacktrace in web.config, still i didn’t get any details more than the method name that raises the error !!
After spending almost 2 hrs to figure out why some pages in my solution (wsp) is working and other they are not, I found that the pages that throw an error are using Microsoft.Http.dll and Microsoft.Http.Extensions.dll that doesn’t exist on the staging vm. and i remembered that those dlls are registered after you installed WCF REST started Kit.
The problem was missing an assembly and not a file !!!
To deploy those assemblies: 1) WCF assebmlies you can find them on the following path: