Have moved to this blog as my previous blog got deactivated
due to lack of blogging !!!! have reposted all my posts from the other blog into here… and hope to blog quite frequently….
Archive for September 10th, 2008
Howdy Blogosphere!!!!
Posted by Shaunak Pandit on September 10, 2008
Posted in General | Tagged: blog deactivated, Shounak Pandit | Leave a Comment »
It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level This error can be caused by a virtual directory not being configured as an application in IIS
Posted by Shaunak Pandit on September 10, 2008
Got the following error some time back when i tried running the project,
since it said that it wasnt configured to be dubugged i ran it with the good old “CTRL + F5″ option and got the following error message in IE
my first guess after reading the error (make that reading half the error) was that somehow there was some configuration problem regardign who overrides whom in the web.config and the machine.config.
but after reading the Total error message understood that the error wasnt in the Web.config it was in the IIS virtual Directory settings that I had ,somehow it had changed.
Anyways, here is how to solve the error :-
Just open IIS and goto the properties for the Virtual directory and click on this button
Posted in .NET, Problem Solving | Tagged: allowDefinition='MachineToApplication' beyond application level, Error to use a section registered as allowdefinition='MachineToApplication'', It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level This error can be caused by a virtual directory not being configured as an application in | 3 Comments »
How to have Multiple Instances of Project Server 2003 on 1 Machine
Posted by Shaunak Pandit on September 10, 2008
How to have Multiple Instances of Project Server 2003 on 1 Machine
How to have Multi[ple Instances of Project server on 1 Machine
I am using the following as examples throughout this article this will describe the steps needed to follow using EditSite tool by Microsoft:
SQL Server : Shounakp (my machine)
Database Name : ProjServer
Site name : ProjServer
Edit site tool : http://go.microsoft.com/fwlink/?LinkId=20891
-
- Copy the DATABASE directory – inside the support directory from your SQL 2002/ MS Project server installation CD, to the local drive on your SQL server (Server containing the ProjectServer DB).
- Create the new DB ( check fig below ) that will host your new Project Server instance in your SQL server. We need the <SETUPDB.CMD> file.
NOTE: We cannot name the new instance DB as ProjectServer since the already existing instance of project server creates a DB named ProjectServer for use.
3. On your SQL server, go to command prompt and execute the following command from the Database directory.
4. In this case, <ProjServer> is my SQL Server and using the <SA> account with password < pa$$@word1 >. The command will look like this : E.g
5. Hit ‘Enter”
6. The processing will take up few minutes let it finish properly (check the following screen)
7. The screen will look like the following screen shot, you will have to press any key to continue.
8. We need to grant permissions to the MSProject Roles on our new instance Database. Follow the steps
-
-
- Open SQL Server Enterprise Manager
- Click <Security>
- Click <Logins>
- Double-click on MSProjectServerUser and grant permission to access the new Dataabse instance <ProjServer>
- Check <Public> and <MSProjectServerRole> in the <Database Roles> in ProjServer DB (the name of your new DB is) Tab.
- Double-click on MSProjectUser and grant permission to access the new <ProjServer> Db
- Check <Public> and <MSProjectRole> in the Dabase Roles in ProjServer (the name of your new DB is) Tab
-
See the following snap shot :-
9. Install the EditSite tool
10. Browse to C:\Program Files\Microsoft Office Project Server 2003 Resource Kit\Toolbox\EditSite and open the tool .
11. Click on “Add” in the Edit Site tool.A prompt will appear with focus on <Site Information> Tab (see folowing screen shot).
12. Enter the <SiteName> and In <Session Manager> enter the name of your SQL server Machine managing your Session
in my case I used <shounakp>. Select “Default Web Site”, and any of the application pools. I selected MSPS2003AppPool.
13. Click on the Database Information tab and fill in the details.
-
- Enter the name of your SQL server, the name of your new manually created DB (in my case I used ProjServer)
- Enter the SQL user that has the MSProjectServerRole in ITProjects DB (in my case I used MSProjectServerUser with password “password”) and its respective password.
- Do the above for the MSProjectRole Member (in my case I used MSProjectUser with password “password”.
14. Click on the <Windows Sharepoint Services Information>
We need to use the same Sharepoint Services settings that we are already using for the 1st instance of Project Server
Hence we can get the WSS Settings from the 1st instance of the ProjectServer.
By following the path : Admin – > Manage Windows Sharepoint Services (See snapshot)
15. Click on Create of Edit Site tool You will get the message indicating that the new site was successfully created
16. Open IE and go to your new PWA instance. In my case, I go to http://shounakp/ProjServer
You will be given the following screen :-
17. Enter User name: Administrator and DO NOT enter a password. Hit “Enter”
You will see your newly created Project Server Instance and this message will pop up giving you the opportunity to change the PWA
Administrator’s password.
Change and save the password
18. Enjoy your newly created Project Server instance.
Cheers!!!!!
UPDATE: Reposting from my previous blog..
Copyright © Shounak Pandit
Posted in Misc, Problem Solving | Tagged: 2 project server, configure Multiple Instances of Project Server 2003, How to have Multiple Instances of Project Server 2003 on 1 Machine, more than one Instance of Project Server 2003, Multiple instance, Multiple Instances of Project Server 2003, Project server, Project server 2003, Projectserver 2003 | Leave a Comment »
How StringBuilder string concatenation affects performance , string builder vs string concatenation “+”
Posted by Shaunak Pandit on September 10, 2008
reposting from older blog
How String Concatenation String Builder Append affects performance
Most of us have used String concatenation in our projects, Have we ever given a thought to what goes on behind while concatenating the strings?
There is a major flaw in using string concatenation as against the String builders append concerning performance only.
Except for performance and memory management both are same and give us the same desired output.
How they work
Lets take a look at how the things work when we concatenate strings
lets take a case where we are concatenating 2 strings and assigning the output to a 1st string
outputString += secondString;
In the above case, each instance of the string is created and assigned hence
in total we will have 3 instances of the strings!! Surprised?? well thats how strings concatenation works
It will create a new string outputString,with both old outputString and secondString
String objects in .net are immutable. Once the string has been created, the value can’t be changed. When you type
outputString = outputString + secondString;
you actually discard the old outputString and create a new string object containing the result of the concatenation. When repeated several times, you end up constructing many temporary string objects.
now just imagine the case where you have n number of strings you have to concatenate how many string objects will be created wont that be a waste of time ??? Creating a string object assigning it some value then again creating a string object and so on …..
Imagine the impact on the performance of the application!!!!
Now lets see how String builder works
Using a string builder you will have
System.Text.StringBuilder outputString = new System.Text.StringBuilder();
outputString.Append(secondString);
StringBuilder, is a mutable string hence in this case we just have 1 instance of outputString and the second string is appended into that existing instance
no other instance is created hence the process is efficient and fast.
Note :- The point to remember here is that using StringBuilder for a concatenation of 2-3 strings doesnt make a significant difference in the performance but when you have numerous strings then the usage of StringBuilder has a big positive Impact on the performance
To see a example check my post
Shounak Pandit
Posted in .NET, Code Snippets, Problem Solving | Tagged: how string concatenation affects performance, How stringbuilder improves performance, How StringBuilder string concatenation affects performance, string builder vs string concatenation "+", String concatenation | 2 Comments »
Sending a Appointment programmatically through Code , ASP.NET ,ICalendar Format
Posted by Shaunak Pandit on September 10, 2008
Here is in which you can send appointments via ICalendar format through code and not using the Outlook Object library (This is a very basic version of the way and does not involve much exception handling,and doesnt take care of nth case , explore a bit on that front
)
I am going to show the method of sending an appointment by creating a ICalendar Appointment file first and then sending it as an attachement over email. (The way in which ICalendar format files are sent when you click on Tools ->Export -> as ICalendar file in the appointment )
Here is the declaration for the TimeFormat and some variables used to fill the Appoinment details. viz start time,endtime etc.
| const string c_strTimeFormat = “yyyyMMdd\\THHmmss\\Z”; string strStartTime=”"; string strEndTime=”"; string strTimeStamp=”"; string strTempStartTime =”"; string strTempEndTime = “”; string vCalendarFile = “”; |
Create a Skeleton for the appointment ICalendar file format and using the variables created above we will assign the values accordingly into the Appoinment skeleton. (This string concatation can be optimised by using string builder)
| // VCalendar Format. const string VCAL_FILE = “BEGIN:VCALENDAR\n” + “VERSION:1.0\n” + “BEGIN:VEVENT\n” + “DTSTART{0}\n” + “DTEND{1}\n” + “LOCATION;ENCODING=QUOTED-PRINTABLE:{2}\n” + “DESCRIPTION;ENCODING=QUOTED-PRINTABLE:{3}\n” + “SUMMARY;ENCODING=QUOTED-PRINTABLE:{4}\n” + “TRIGGER:-PT15M\n” + “PRIORITY:3\n” + “END:VEVENT\n” + “END:VCALENDAR” ; |
Assign the Appointment values to the variables declared in the first code section and in the appropriate format.
|
DateTime dtmStartDate = DateTime.Parse(startDate.ToString()); DateTime dtmStartTime = DateTime.Parse(startDate + ” ” + startTime.ToString()); DateTime dtmEndTime = DateTime.Parse(startDate + ” ” + endTime.ToString()); strTempStartTime = string.Format(“{0} {1}”, dtmStartDate.ToShortDateString(),dtmStartTime.ToLongTimeString()); strTempEndTime = string.Format(“{0} {1}”, dtmStartDate.ToShortDateString(),dtmEndTime.ToLongTimeString()); strTimeStamp = (DateTime.Parse(strTempStartTime)).ToUniversalTime().ToString(c_strTimeFormat); strStartTime = string.Format(“:{0}”, strTimeStamp); strEndTime = string.Format(“:{0}”, (DateTime.Parse(strTempEndTime)).ToUniversalTime().ToString(c_strTimeFormat)); |
Using String.format fill in the Appoinment skeleton created earlier with the variable values.
| vCalendarFile = String.Format(VCAL_FILE, strStartTime, strEndTime, location, summary, subject , strTimeStamp, attendeeEmail.Trim() , “ShaunakP”, attendeeName.Trim(), attendeeEmail.Trim(), organizerEmail.Trim()); |
Now that we have the ICalendar file created, we need to write it to the disk so as to attach it to the outgoing email
(Anybody knows a method of just creating the ICalendar file in memory and directly attaching the file without creating a Physical file please leave a feedback on how to do that,didnt get much time to look into it.)
|
filePath += “\\” + subject+ “.ics”; TextWriter tw = new StreamWriter(filePath); // write a line of text to the file // close the stream |
Now that we have the ICalendar all we need to do is send a mail to the persons involved in the Appoinment with the ICalendar file as an attachment.
|
// Create object for sending mails MailMessage mail = new MailMessage(); |
When the Person who receives the mail opens the attached ICalendar file,it will open up in Outlook as an Outlook Appoinment.
Cheers!!
P.S There are a lot of improvements that can be done in this code like for e.g using stringbuilder etc but I have skipped on them as this is just a code snippet.
To see the code for the above SendAppoinment method click here
*Update : For those of you interested in sending a Meeting Request here is the VCalendar format
| “BEGIN:VCALENDAR\n” + “PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n” + “VERSION:2.0\n” + “METHOD:REQUEST\n” + “BEGIN:VEVENT\n” + “ATTENDEE;CN=\”{8}\”;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:{9}\n\n” + “ORGANIZER:MAILTO:{10}\n” + “DTSTART{0}\n” + “DTEND{1}\n” + “LOCATION:{2}\n” + “TRANSP:OPAQUE\n” + “SEQUENCE:0\n” + “UID:{6}\n” + “DTSTAMP:{5}\n” + “DESCRIPTION:{3}\n” + “SUMMARY:{4}\n” + “PRIORITY:5\n” + “X-MICROSOFT-CDO-IMPORTANCE:1 \n” + “CLASS:PUBLIC\n” + “BEGIN:VALARM\n” + “TRIGGER:-PT15M\n” + “ACTION:DISPLAY\n” + “DESCRIPTION:Reminder\n” + “END:VALARM\n” + “END:VEVENT\n” + “END:VCALENDAR” ;
|
* Known Issue: If a person rejects the meeting it wont be conveyed to you
Posted in .NET, Code Snippets, Problem Solving | Tagged: ASP.NET, asp.net ical format, asp.net ical format code, ical format, ICalendar Format, iCalendar format ASP.NET code, programmatically sending icalendar, Sending a Appointment programmatically through Code, sending meeting request through code | 25 Comments »
Datagrid Sorting ASP.NET or How to Sort Datagrid
Posted by Shaunak Pandit on September 10, 2008
Datagrid Sorting ASP.NET or How to Sort Datagrid
Step I )
In the Datagrid definition:
add 2 properties AllowSorting = true and OnSortCommand=”MethodName in code behind”
e.g
<asp:datagrid id=”dgSearchList” runat=”server” Height=”125px” Width=”627px” CssClass=”panelChildSolidBorder”
CellPadding=”2″ AllowCustomPaging=”True” AutoGenerateColumns=”False” OnItemCommand=”detailsClicked”
ShowHeader=”True” AllowSorting=”True” OnSortCommand=”dgSearchList_SortClick” PageSize=”4″>
AllowSorting=”True” makes the datagrid sortable and OnSortCommand=”dgSearchList_SortClick” tells which method to call when the header is clicked.
Step II )
Now we need to define the method to call when the column headers are clicked
here dgSearchList_SortClick is the method that will be called when the Column headers are clicked for sorting.
Codebehind :
public void dgSearchList_SortClick(object sender,DataGridSortCommandEventArgs e)
{
sortField = e.SortExpression; // ie the Sortexpression assigned to the Column.Check STEP III for how to assign a // sortexpression on a column.
PopulateDatagrid(); //Call the method that populates the Datagrid with
//the values from the Dataview.
}
PopulateDatagrid()
{
if(sortMode.ToString().Trim().Equals(SORT_ASC))
{
sortMode = SORT_DESC; // Here sortMode is just a Variable storing the
direction of the sort.There are better ways to store this than the current one shown hereJ
}
else
{
sortMode = SORT_ASC;
}
txtSortMode.Text = sortMode;
// SORT_DESC and SORT_ASC are constants with the following string values.
// SORT_DESC = “Desc”
// SORT_ASC = “Asc”
DataView dv = new DataView(dt);
dv.Sort = sortField.Trim() + ” ” + sortMode;
dgSearchList.DataSource = dv;
dgSearchList.DataBind();
}
The code above checks whether we want to sort in Ascending order or in Descending order
and assigns the SortExpression concatenated with the Sorting direction (Asc/Desc)
and binds the datagrid again (don’t forget to bind the data grid its very important)
Step III)
You need to specify the sorting expression for that column in the column definition in the ASPX page
e.g
<asp:BoundColumn DataField=”Location” SortExpression=”Location” HeaderText=”LocationArea”>
<ItemStyle Height=”10px” Width=”10px”><!–ItemStyle>
asp:BoundColumn>
be carefull of what you define as the sortexpression because this is what is passed to the codebehind and sortexpression is what identifies which column was clicked for sorting
in this case the sort expression for the LocationArea column is “Location”, hence when we clicking on the location column will set the e.SortExpression (check Step III for e.SortExpression) to “Location”. Hence identifying the column clicked.
Posted in .NET, Code Snippets, Problem Solving | Tagged: ASP.NET Datagrid sorting, datagrid sorting, DataGrid sorting columns, sorting columns datagrid | Leave a Comment »
First Web Service :) used XSLT for transforming XML
Posted by Shaunak Pandit on September 10, 2008
Worked on my first Web Service today, wasn’t much of a complex web service but I got some idea about WebServices and their working.
Was a simulation of a XML returned by a third party tool retrieving records from DB2,
The objective involved getting rid of the extra nodes (data) returned in the XML from the 3rd party and just passing on the XML data recognised by the consumer application as a valid object.This was achieved by making my transformer app sit in between the Webservice and the consumer app.
The best option in this case was transforming the XML output from the 3rd party tool into XML recognised by the consumer application using XSLT as it allowed us to change the nodes (data) passed on to the consumer app by just changing the XLS file and not recompiling the whole of the transformer app (incase we had written a custom class to take care of parsing the output XML and returning only selected number of fields).
Will post a code snippet on the transformation code a bit later.Now I am almost done with the Cruisenet Doc ,will be posting that in a while here (by tomorrow most probably) and ofcourse the Nant and Nunit doc need to be completed and posted too
Posted in .NET, Problem Solving | Tagged: ASP.NET Webservice xslt transform xml, First Web Service :) used XSLT for transforming XML, XSLT XML transform | Leave a Comment »
Visual Studio IDE Tips & tricks: Bookmarks & Incremental Search
Posted by Shaunak Pandit on September 10, 2008
Bookmarks
Bookmarks are available through Edit – > Bookmarks.
using bookmarks we can mark places in our code which we would like to revisit later on.
Create/Remove Bookmark – Ctrl+K, Ctrl+K
Move to next bookmark – Ctrl+K, Ctrl+N
Move to previous bookmark – Ctrl+K, Ctrl+P
Clear all bookmarks – Ctrl+K, Ctrl+L
Incremental Search Pressing
Ctrl+i will incrementally search for text as you type.
HOWTO : Press Ctrl + i then type the word you want to search. Hit backspace to clear a character and enter to finish.
Pressing F3 after this will work as usual, i.e. search for the next occurrence of previous search.
Posted in .NET, Visual Studio Tips and Tricks | Tagged: Visual Studio IDE : Bookmarks & Incremental Search, Visual studio shortcuts, Visual studio tips, VS bookmarks, VS incremental search | Leave a Comment »












Visual Studio IDE Tips & tricks: ShortCuts for formating code , commenting code , wordwrap code
Posted by Shaunak Pandit on September 10, 2008
ShotCut Keys
Convert selected code to lower case – Ctrl+U
Convert selected code to upper case – Ctrl+Shift+U
Comment selected code – Ctrl+K, Ctrl+C
Uncomment selected code – Ctrl+K, Ctrl+U
WordWrap
Have a line of code which goes beyond the screen width? but you need to keep it that way and the only alternative is to scroll all the way to the right?
Well theres good news VS IDE provides a (toggle) shortcut which will put the line contents beyond the screen width on the next line and back onto the same line.
ShortCut Key : – Ctrl + r + r (toggles)
Posted in .NET, Visual Studio Tips and Tricks | Tagged: commenting code, Visual Studio IDE : ShortCuts for formating code, Visual studio shortcuts, wordwrap code | Leave a Comment »