Yet another way of writing code in SharePoint2007

August 7, 2009

Hi all;

Remember my post “Publish Your .ASPX Page With Code Behind To SharePoint 2007“, here is a simpler way of creating no code behind aspx page in SharePoint2007.

Here we will go through 3 steps:

  1. Build a simple aspx page in Visual Studio 2005 (with no separate code file).
  2. Tweak the SharePoint Web application Web.config file to accept running codes.
  3. Copy the aspx code to a new aspx page in SharePoint.

So lets start:

Building the aspx page

  1. open up Visual Studio 2005 or 2008, and make a new web site name it whatever.
  2. add another aspx page to the web site, but here uncheck the checkbox titled “Place code in separate file“.
  3. open this aspx page, and switch to design view.
  4. drop a TextBox, name it txtHello, and drop a Button name it btnHello.
  5. double click the btnHello command button.
  6. in the btnHello_Click protected sub, write this simple line code
  7. txtHello.text = “Hello World”. run your web site to test if every thing works fine.

  

Modify the web.config file of the SharePoint Web application:

  1. Open your Web application web.config file (which is found in this path –> C:\inetpub\wwwroot\wss\VirtualDirectories\xxxx   , the xxxx is the port number of your web application but in most cases for the default website its 80).
  2. add the following lines to the web.config file, directly inside the <configuration<SharePoint> directive and save.

<SafeMode MaxControls=500 CallStack=false DirectFileDependencies=10 TotalFileDependencies=50 AllowPageLevelTrace=false>

 <PageParserPaths>

<PageParserPath VirtualPath=/* CompilationMode=Always AllowServerSideScript=true IncludeSubFolders=true ></PageParserPath>

</PageParserPaths>

</SafeMode>

here we are telling SharePoint to accept running codes from the root path including all sub folders by using “/*” , but i prefer that you create a folder in your site collection, naming it “Applications”, and put all aspx pages that contains code in it, then change the path in the VirtualPath=/*  to be VirtualPath=/Applications/* .

 

Finally, copy the code in this aspx page to a new aspx page in SharePoint using SharePoint Designer:

  1. Open SharePoint Designer 2007, create a new aspx page, back to your web site which you created in vb.net, open the aspx page that you’ve created and tested, switch to code view, select all (Ctrl+A) and Copy (ctrl+C) code, paste the code in the SharePoint aspx page.
  2. Save & Check-In the SharePoint aspx page, run and have fun.

Publish Your .ASPX Page With Code Behind To SharePoint 2007

July 22, 2008

It was a headache for me to create a HelloWorld.ASPX page, that contains only one button that changing its text to “Hello World !” when clicked (Imagine!!), and deploy it in my SharePoint 2007 Site, so I’ve start surfing the internet looking for a help on this issue. And after testing many ways, here is my 100% working Step-by-Step example on how to write a simple Hello World ASPX Page with Code Behind File example inside SharePoint 2007.

(I’ll be using Visual Basic .Net language to accomplish this Example)

1. Create new web site: Open Micorosft Visual Studio 2005, and start a new WebSite & Name it any thing and save it any where you want.

By default a Default.aspx page will be created with a CodeFile named Default.aspx.vb. Add a Button from the toolbox to this Default.aspx (in the design mode) , i assume that you (as a .Net developer) know that when you’r using a CodeFile, an Attribute will be added in the page directive of the Default.aspx page, named CodeFile, as follows

<%@ Page Language=”VB” AutoEventWireup=”false” CodeFile=”Default.aspx.vb” Inherits=”_Default” %>

2. Writing Code: Double click on the Button1 control and add the following line of code 

                     Button1.Text = “Hello World”

So the CodeFile will be looking as follows :

Partial Class _Default

Inherits System.Web.UI.Page

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

Button1.Text = “Hello World”

End Sub

End Class

3. Modify the code file class & add namespace: Now we want to make some modification to this file, first add a Namespace and name it HelloWorld and change the name of the class (which is _Default) to be Test and make the class Partial Public Class, after these modifications, your code behind file should look like the following:

Namespace HelloWorld
    Partial Public Class Test
        Inherits System.Web.UI.Page
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles  Button1.Click
           
Button1.Text = Date.Now
        End Sub
    End Class
End Namespace

4.Modify the Default.aspx “inherites” attribute: Now beacause of these modifications, we must now open the Default.aspx page in code view, and modify the Inherits=”_Default” in the page directive (the first line of the page) to inherit from this new named class, so make it Inherits=”HelloWorld.Test”. now save your work and run the application, just to be sure that every thing is going well. click the button. the Button text shall state “Hello World”

 

  

5.Creating Strong Name Key : Now we must prepare a “Strong Name Key” for our application, this can be done using a tool named “SN.exe”, you could find it in the following path:

“C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\sn.exe”

or you can run it from Start >> Programs >> Microsoft Visual Studio 2005 >> Visual Studio Tools >> Visual Studio 2005 Command Prompt

write the following command line : SN -k c:\MyKey.snk .

after this command runs it will create a MyKey.snk file in the C:\ root directory (as we write in the comman line).and amessage will appear stating “key pair written to c:\mykey.snk”.

6.Publishing the web site: Now you must publish our site to any folder in our machine, as follows:

a.    From solution explorer, point to your project, right click.

b.    Select Publish Web Site (as shown below)

c.    Now brows to the folder you wish to publish your site to. In my example I’ll name it MySitePublished to the C:\ root, so its path will be C:\MySitePublished.

d.    Enable “use a key file generated with the strong name tool” option.

e.    Check the “Mark assemblies with Allow Partially Trusted Caller Attribute APTCA”, (as shown below)

f.     In the “key file location:” box, browse to the file “c:\MyKey.snk” (that you’ve generated in step “5”) & click open.

g.    Finally click ok. Now the publish operation will start, and will take only a few seconds to complete.

 

Please note that after publishing your web site, a “.DLL” file is generated, holding a name starts wirh “App_Web_” followed by random generated letters, like “App_Web_fyrnh9gi.dll”, and stored in the bin folder of your publishing folder (in our case its C:\MySitePublished\bin).

7. Preparing Your SharePoint Site for the new comer: Open the SharePoint Designer, we will do the following major steps:

1-    Creating a new .ASPX page inside a new folder called “Applications”.

2-    Copying our generated .DLL file to the bin folder of the SharePoint site.

3-    Modify the Web.Config file of the SharePoint site.

 

So Let’s We Start

A.    In your SharePoint Designer open your web site, Create a folder in the root of your SharePoint site and name it for example “Applications”.

B.     Add a new .ASPX page into it naming it Hellowrold.aspx, go to the code view, and delete all code inside.

C.    Open a new instance of your Visual Studio 2005, and open the published web site (which is C:\MySitePublished), ignore the warning message by pressing “Yes”, and open the Default.aspx page in the “Source View” and copy all the code.

D.   Back to the SharePoint Designer paste the source code inside the Helloworld.aspx page, notice in the page directive, the inherits attribute is changed to  inherits=”HelloWorld.Test,” followed by the name of the .DLL file generated, in my case App_Web_cotcnlm3, so the full page directive is stating <%@ page language=”VB” autoeventwireup=”false” inherits=”HelloWorld.Test, App_Web_cotcnlm3″ %>.

E.    Go to the bin folder of the published website (which is C:\MySitePublished), and copy the .DLL file (in my case its App_Web_cotcnlm3.dll), and paste it into the bin folder of your SharePoint site, which can found in the following path:

“C:\ Inetpub\Wwwroot\wss\VirtualDirectories\port number\bin”

The port number is the port of the SharePoint Server Web Application

F.    Now open the “Web.Config” file of your SharePoint Web Application, which can found in the following path:

“C:\ Inetpub\Wwwroot\wss\VirtualDirectories\port number

The port number is the port of the SharePoint Server Web Application

G.   Navigate to the <SafeControls> directive and add the following line:

<SafeControl Assembly=App_Web_cotcnlm3 Namespace=HelloWorld TypeName=* Safe=True />

H.    Navigate to the <PageParserPaths> directive and add the following line:

<PageParserPath VirtualPath=/Applications/* CompilationMode=Always AllowServerSideScript=true IncludeSubFolders=true/>

I.     I think that you need to make iisreset, so go to start menu > run, and write the following command : IISRESET.

J.     Preview your HelloWorld.aspx page and have fun.