I just received this email from a co-worker about the upcoming live event in Richmond VA. Check out the events web site @ http://www.msdnevents.com/ or register here for the event.

In a nut-shell, some of the new technologies such as WPF, ADO.NET Entity Framework and ADO.NET Data Services will be covered. The event is on Thursday September 18. The developer sessions are from 1:00 P.M. – 5:00 P.M.


 
Categories: Training

I am not sure if I ever got to post about this but you can view the newly published content and subscribe to the RSS feed for the Microsoft Office Products (WSS, MOSS, Project Server 2007, Forms Server 2007, etc) @ the following URLs.

Newly Published Content

WSS 3.0

MOSS 2007

Office Forms Server 2007

Office Groove Server 2007

Performance Point Server 2007

Office Project Server 2007

RSS Feeds

WSS 3.0

MOSS 2007

Office Project Server 2007


 
Categories: MOSS | WSS

August 16, 2008
@ 12:08 PM

WSS 3.0 and MOSS 2007 offer many OOTB site definitions for different types of sites. More specifically, the following are OOTB categories and the site definitions available under each category. Note that some of the site definitions are only available while creating site collections.

  • Collaboration
    • Team Site
    • Blank Site
    • Document Workspace
    • Wiki Site
    • Blog
    • Microsoft Office Project Workspace
  • Meetings
    • Basic Meeting Workspace
    • Blank Meeting Workspace
    • Decision Meeting Workspace
    • Social Meeting Workspace
    • Multipage Meeting Workspace
  • Enterprise
    • Document Center *
    • Records Center
    • Site Directory *
    • Report Center * *
    • Search Center with Tabs *
    • My Site Host
    • Search Center
  • Publishing
    • Collaboration Portal *
    • Publishing Portal *
    • Publishing Site
    • Publishing Site with Workflow

* - Available while creating a site collection.

** - Available while creating a sub-site but resulted in an error. Created the same as a site-collection and it worked fine.

It's kind of difficult to remember the default look & feel of an OOTB site which requires one to create a "throw-away" site just to see the look & feel. I have done it many times! This morning I spent some time and created all of the sites on my development machine and have made the screen shots available.

Collaboration

Team Site

Blank Site

Document Workspace

Wiki Site

Blog

Microsoft Office Project Workspace

Meetings

Basic Meeting Workspace

Blank Meeting Workspace

Decision Meeting Workspace

Social Meeting Workspace

Multipage Meeting Workspace

Enterprise

Document Center

Records Center

Site Directory

Report Center

For some reason I got the following error while creating a sub-site of this type under a site-collection. Not sure what am I missing.

Creating the Report Center as a separate site collection worked like a charm!

Search Center with Tabs

My Site Host

Search Center

Publishing

Different Publishing site definitions are available depending on the context (as a site collection vs as a sub-site) in which the site is created.

While creating a site-collection, the following site definitions are available:

  • Collaboration Portal
  • Publishing Portal

While creating a sub-site under a site-collection, the following site definitions are available:

  • Publishing Site
  • Publishing Site with Workflow

Collaboration Portal

Publishing Portal

Publishing Site

Publishing Site with Workflow


 
Categories: MOSS | WSS

WSS/MOSS deployment packages are nothing but the CAB files which are created by the MakeCAB tool. We have been using MakeCAB for creating the WSP file for our project and it works like a charm.

Today, I recreated the WSP package for the project we are working on and realized that instead of generating one of each of the output files (.inf, .rpt and .wsp file) it generated more than one .wsp files; all in all, I ended up having the following files in the output folder.

Figure 1. More than one .wsp files generated by MakCAB.

The folder named 681984000 was also created with another .wsp file in it which was around 1300 KB in size!

Before going further, let's see the output files generated by the MakeCAB. The MakeCAB generates different files but the two important files are setup.rpt and setup.inf.

The setup.rpt contains the information about the total files included in the cab files, how much data was compressed, time taken to compress the data, and so on. The following is the setup.rpt file which was created on my development machine.

Figure 2. setup.rpt generated by MakCAB.

The setup.inf file contains information about the disks and the cabinet files which were created and also contains the list of all of the files which were included in each cabinet file. See below.

Figure 3. setup.inf generated by MakCAB.

The above setup.inf specifies that there were two disks/cabinet files created. Similarly each and every file which was included in the cabinet file has the numbers like 1,1 and 2,2 prefixed to it. That specifies which disk/cabinet file contains that particular file! In this case, some of the files went into first cabinet file whereas the other files (including the manifest.xml) went into the second cabinet file.

So going back to my problem of having more than one .wsp files, in the past the same project generated one .wsp file! I was wondering why it generated more than one files this time around and even if it did, how more than one wsp files would play with WSS/MOSS.

I gave it a whirl anyways! Running the addsolution command against stsadm returned the following error. Obviously it was looking for the manifest.xml file in the root Project.wsp but it could not find manifest.xml in that file because the manifest.xml file was included in the second .wsp file which in turn was in the 68198400 folder! – This happened because MakeCAB places files on disks (and in cabinets) in the order they are specified in the directive file(s).

Figure 4. Adding the Project.wsp to MOSS failed!

I changed the Project.ddf file and listed the manifest.xml file @ the top of the list of files to make it go in the first .wsp file, re-created the WSP package again; again it generated more than one files (which was expected) but this time around the manifest.xml file was included in the root Project.wsp file! I ran the above stsadm command again to see how it works this time but it generated the same error even though the manifest.xml file was part of the root Project.wsp!

So that means WSS/MOSS don't play well with more than .wsp files!

What should we do? First we need to find out why MakeCAB was generating more than one file and then somehow make it to generate only one .wsp file with all of the project files in it.

CAB Directives

I dig around the makecab SDK and found the "Make Cab User Guide" which explained how to use the MakeCAB and most importantly how to customize its behavior. While reading through the user guide, I found the following statement in it: The MakeCAB defaults are configured for a floppy disk layout ….

That was it! It did not take me long to realize that the first of the two .wsp files generated by the MakeCAB was around 1.4 MB (See Figure 1 above), which is the maximum size supported by a floppy disk! That means while processing the .ddf file of the project, MakeCAB created the first .wsp file and when the size limit reached, it started to create the next file!

I had the answer to my first question. More than one file was generated because the output cabinet file size was more than the default size of 1.44 MB.

How to fix it? Read on.

The CAB files are driven by the "CAB Directives" which are listed @ the top of the .ddf file and which govern the behavior of MakeCAB. Since we did not use any specific CAB directive in our .ddf file except the CabinetNameTemplate and DiskDirectory1 that means the MakeCAB used default values for the other settings. Which CAB directive to change?

Some of the important CAB directives are listed below along with their purpose and the default value.

Directive

Purpose

Default Value

CabinetNameTemplate

This string template is used to generate the cabinet files names; * is replaced by Cabinet number. If you are generating one cabinet file, specify the actual file name here.

 

CabinetFileCountThreshold

Specifies the threshold count of files per cabinet.

 

If you want to limit the number of files that should be added to the cabinet file then specify that limit here.

Unlimited

FolderFileCountThreshold

Specifies the threshold count of files per folder.

 

If you want to limit the number of files that should be added to the folder in your cab file then specify that limit here.

Unlimited

MaxDiskSize

Specifies the maximum size of the disk.

 

This directive may contain one of the following special values: CDROM, 1.44M, 1.2M, 720K, 360K

1.44M

MaxCabinetSize

Specifies the maximum cabinet file size for current cabinet.

MaxDiskSize

FolderSizeThreshold

Specifies the threshold folder size for current folder.

MaxCabinetSize

 

It was a no brainer once I read the above directives; I had to increase the MaxCabinetSize; since the default value of MaxCabinetSize is same as that of the MaxDiskSize, then I decided to change the MaxDiskSize directive instead and added the following line in the .ddf file of the project.

.Set MaxDiskSize=CDROM

This time around the output of the MakeCAB was only one .wsp file with all of the project files inside it. See below – note the size of the .wsp file; it is more than 1.4 MB which means it contains all of the project files.

Figure 5. Only one .wsp file generated by MakeCAB after changing the .ddf file


 
Categories: MakeCAB | MOSS | WSP Package | WSS

Last night I spoke @ the Richmond .NET User Group meeting. The topic was Advanced ASP.NET Concepts and Tips/Tricks. A decent number of people showed up (around 40+) and I sure had fun delivering the presentation. I hope the attendees also had fun and were able to grasp some of the concepts and techniques that I shared with them.

After the presentation I received the email addresses of around 16 people who wanted me to email them the copy of the presentation and the code. I will do that tonight and I am also making the presentation and the code available for download from the following links.

Advanced ASP.NET Concepts and Tips/Tricks [ Presentation ] [ Code ]


 

As described in this post, I was scheduled to speak @ the Richmond Code Camp 2008.1 on last Saturday.

Oh boy, that was fun. Decent crowd showed up for the code camp; around 15-20 people attended my session on "WSS and SharePoint for Developers". Presentation went smooth, no hiccups except the quality of the projector in my room L The projector was of a poor quality and attendees of the session complained about it. Setting aside the projector related problem, ECPI has been a great host for such events; kudos to them for providing their facility and for making sure everything goes smooth.

Following is the link to the presentation download.

WSS and SharePoint For Developers [ Presentation ]

During the key note, Andy Leonard announced that he is leaving VA and going to Atlanta GA. That's for sure is a great loss for the developer community in Richmond and surrounding area. He is a fine architect, author, speaker and one of the few good people around us. I wish Andy and his family best of luck in their future endeavors. Andy and the family, God bless you.

In the end, big thanks and appreciations for Kevin Israel, Andy Leonard, Darrell Norton, Robin Edwards, Susan Lennon and the team for making this code camp one more success. Guys, you rock!


 
Categories: Code Camp | Community Events | RCC | Speaking

I will be speaking @ the May meeting of the Richmond .NET User Group. The topic is Advanced ASP.NET Concepts and Tips/Tricks.

You might be wondering why I chose this topic. Well, let me bring you in context. I have been interviewing .NET candidates for quite some time now. My personal experience from those interviews is that most of the developers lack the knowledge of some of the powerful ASP.NET concepts. So I decided to share some of my knowledge and personal experience with those technologies.

I am sure it is going to be fun. So stop by.

Information about the event is as follows.

Thursday, May 1, 2008, 6:30 PM - 8:00 PM

Social Time starts at 6:00!

Location: Markel Plaza

4600 Cox Road

Glen Allen, VA 23060


 

As we all know by now that the Office 2007 products use the "Office Open XML Format" as the default format for the files' content. The following resources would be handy if you ever need to create/manipulate the Office 2007 files in Visual Studio.

Open XML Format SDK

The SDK contains the documentation and the classes for creating/maintaining the Open XML files.

2007 Office System Sample: Open XML File Format Code Snippets for Visual Studio 2005

The name says it all!

2007 Office System Document: Open XML Developer Map

The poster that contains the visual schemas for the Word documents, the Excel spread sheets, and the Power Point presentations.

2007 Office System: XML Schema Reference

The reference documentation for the 2007 Office System XML schemas.

Open XML Developer

Read/learn about the Open XML Formats.

XML in Office Developer Portal

The following articles are a great resource for learning about how to manipulate the Open XML files using code.

Building Server-Side Document Generation Solutions Using the Open XML Object Model (Part 1 of 2)

Building Server-Side Document Generation Solutions Using the Open XML Object Model (Part 2 of 2)

Manipulating Word 2007 Files with the Open XML Object Model (Part 1 of 3)

Manipulating Word 2007 Files with the Open XML Object Model (Part 2 of 3)

Manipulating Word 2007 Files with the Open XML Object Model (Part 3 of 3)

Manipulating Excel 2007 and PowerPoint 2007 Files with the Open XML Object Model (Part 1 of 2)

Manipulating Excel 2007 and PowerPoint 2007 Files with the Open XML Object Model (Part 2 of 2)


 
Categories: Office | Visual Studio

Categories: Outlook | Samples | VSTO

April 12, 2008
@ 06:05 PM

While exploring options for integrating BizTalk and SharePoint, I stumbled upon the following BizTalk Server 2006 related posters! For sure, a picture is worth a thousand words.

BizTalk Server 2006 R2 Database Infrastructure Poster

Microsoft BizTalk Server Operations Guide

BizTalk Server 2006 R2 Capabilities Poster

BizTalk Server 2006 R2 Runtime Architecture Poster

I also came across the BizTalk Server 2006 Tutorials and the BizTalk Server 2006 Installation and Upgrade Guides


 
Categories: BizTalk Server 2006 | Training

I was able to get my blog listed @ the official Richmond Code Camp web site J see below.

Thanks to Kevin Israel and Susan Lennon for making it happen.


 
Categories: Personal

I will be speaking @ the upcoming Richmond Code Camp on April 12, 2008. The topic is "SharePoint for Developers" and I am going to share couple of development options available to a .NET developer for extending SharePoint. I will also share couple of tips and tricks that I have learned while working with WSS/MOSS and would also have two cool demos. :)

You can see the tentative schedule for the sessions here


 
Categories: Code Camp | RCC | Speaking

Microsoft has just released the .NET 3.5 Enhancement Training Kit which includes the presentations, hands-on-labs, and demos for one to learn .NET 3.5 technologies such as ASP.NET MVC, Silverlight, ADO.NET Data Services and ADO.NET Entity Framework.

Also check out my previous post about Windows Server 2008 Developer Story for more .NET 3.5 related material.


 
Categories: .NET 3.5 | ADO.NET 3.5 | ASP.NET MVC | Silverlight

Use the following resources for training your organization's business users and/or Information workers on SharePoint and SharePoint Designer. Note that these are not the hard-core developer training resources but these can be a good start for a developer to start learning about the general concepts of SharePoint and how to perform certain tasks in SharePoint.

The very first resource is the training that comes in two flavors; the Standalone Edition, which can be installed directly on the end user's machine and the Portal Edition which can be installed on a common MOSS site which is accessible by all of the end users.

Office SharePoint Server 2007 Training (Standalone Edition)

Office SharePoint Server 2007 Training (Portal Edition)

Office SharePoint Designer 2007 Training (Standalone Edition)

Office SharePoint Designer 2007 Training (Portal Edition)

Apart from the above training, check out the training for more advanced business users @ SharePoint Designer 2007 Business Administrator Training and the Six-Part Series for getting the most out of the SharePoint Designer.

Road maps

Since WSS/SharePoint is huge and has so many areas for one to learn, hence it would be good to have some kind of guided learning approach (or focused training) where one particular area of SharePoint is targeted, learned and explored in detail and then move on to the next area.

Microsoft has done a good job coming up with the road maps for such training. Following are some of the road maps that I found; there could be more, but I am not sure.

Roadmap to using SharePoint Server 2007

Roadmap for creating and managing sites

Roadmap for creating and configuring libraries

Roadmap for creating and customizing Web Part Pages

Roadmap for giving users access to sites and site content

Roadmap for managing navigation

The following articles provide some of the important concepts and training that a power user should have or better yet have your end users go through the training material located @ Help for SharePoint Server 2007

Understand groups and permissions on a site

Enable anonymous access

Give users access to a site

Manage permission levels

Introduction to sites, workspaces, and pages

Manage sites and site collections

Work with site content and structure


 
Categories: MOSS | Training | WSS

I needed to refresh some of the TCP/IP and DNS related concepts; while searching for some information, I came across the following guide on the TechNet web site.

TCP/IP Fundamentals for Windows


 
Categories: TCP/IP

Ever wondered about the new HTML specification which is still being worked on and how does it differ from the current HTML spec? I came across the following while looking into the same.

HTML 5 differences from HTML 4

HTML 5 Specification is still in draft.


 
Categories: HTML

Ever wondered how to manage the requirements for a software system? I did! I found the following white paper about the Visual Studio Team System while searching for some tools for managing software requirements. I think it's about time I should start looking into these features of the Team System.

Requirements Management with Visual Studio Team System White Paper

While you are @ it, also download the MSF for Agile Software Development Process Template v4.2.


 

I just came across this.

A must have for the developers. With the plethora of technologies coming out from Redmond, it has become really difficult to keep track and get your hands on all of those technologies. This guide describes some of the new technologies and how those technologies can be used to come up with a solution. Some of the technologies discussed in this guide include the following:

  • IIS Manager and IIS Modules
  • WCF
  • WWF
  • How different technologies can be used to create the connected applications
  • Federation-Aware Applications
    • ADFS
    • AD LDS
    • AzMan
  • MMC and PowerShell
  • And much more

Borrowed from the Microsoft downloads page.

The Windows Server 2008 Developer Story introduces users to new features of the Windows Server 2008 operating system by providing a cohesive story about how the features fit together to make a compelling platform for developers. The Developer Story topics explain how to take advantage of a new feature or solve a problem using the new Windows technologies. The topics include conceptual information for context and technical specifications for practical application of each scenario.

Windows Server 2008 Developer Story Home Page

Windows Server 2008 Developer Story Help File

Subscribe to RSS

Windows Server 2008 Developer Story MSDN Articles

Read away!


 
Categories: Windows Server 2008 | WCF | WWF | Card Space

April 5, 2008
@ 10:43 AM

Woow, Microsoft is giving away free software to students from selected countries! As of this writing this blog post, students from the United States, the United Kingdom, Canada, China, Germany, France, Finland, Spain, Sweden, Switzerland and Belgium are eligible for this offer but Microsoft will be adding more countries to the list, so stay tuned.

Read more @ What is DreamSpark?


 
Categories: DreamSpark | Free Stuff

Last week end I found out the following videos and white papers about SharePoint configurations and operations. Check them out @ Advanced lectures and white papers


 
Categories: MOSS

It is a good practice to enable SSL on your web sites for security reasons. But there are times when you might not want to secure everything under an IIS Web Site because SSL carries with it some over-head that should be avoided.

Think about an ecommerce web site, such as www.amazon.com where there could be thousands of simultaneous users @ one point in time hitting the servers. One would want to conserve the processing cycles and use those cycles for serving the content instead of encrypting/decrypting SSL packets for the pages that really don't need SSL.

Also realize that a web site serves not only the dynamic content but also the static content such as CSS, JavaScript, images, etc. Using SSL for these types of files would be overkill for most, if not all, of the applications.

So what do we do? Well, enable SSL only on the resources (or pages) that require it. Following are some of the examples of the pages on which you would want to enable SSL:

  • Create / Maintain Account
  • Login
  • Change or Reset Password
  • Any other page that submits the sensitive data

Most of the developers don't know that it is possible to enable SSL on an individual file! What does that mean? That means you can keep a mix of http:// and https:// pages under your IIS Web Site (or Virtual directory for that matter).

The following list of steps walks you through the process of enabling SSL on a page in IIS 6.0. The sample project used in the walkthrough can be found here.

The following walkthrough also assumes that you have setup SSL on IIS server. See the following articles for more information about how to setup SSL on IIS.

There is couple of subtle-points that needs to be made, hence follow along the steps and pay special attention to the URLs and the behavior of the application.

Extract the attached zip file and create a virtual directory under IIS Web Site that has the SSL certificate installed on it.

The virtual directory on my machine looks like the following:

 

SSL not required on the IIS Web Site

Launch Inetmgr, right-click on the web site on which the SSL certificate has been imported, select Properties, go to the Directory Security tab and click on Edit button under the Secure communications sections.

This will take you to the following dialog-box which displays the SSL status of the web site. Notice that the Require secure channel (SSL) box is not checked.

Don't make any changes and dismiss all of the dialog-boxes. At this point in time, the IIS web site has the SSL certificate installed on it. No other changes to the configuration of the files have been made.

Browse files without configuring anything on the server

Browse both the Secure.aspx and NotSecure.aspx pages over HTTP. Both of the pages should run fine and you should see the following screens.

Now browse both of the files over HTTPS. On my machine I had setup HTTPS on port 8443, hence I had to specify that port in the URL. But if you have configured SSL on the standard port (which is 443), you don't have to specify the port in your URL.

So browsing pages over the secure connection yields the following output. (Disregard the Certificate Error message next to the URL – this is happening because the site URL specified in the certificate is different from the URL that I am using to browse the pages.)

Conclusion

As you can see, we have successfully browsed both of the pages over HTTP and HTTPS.

What does that mean?

That means:

  • Importing the SSL certificate on an IIS web site allows that web site's resources to be invoked over SSL, but this does not enforce the use of SSL.
  • The determination of whether or not to use SSL is made by the client (by using either the http:// or https:// prefix in the URL) and the server happily serves the content. The server does not have a say whether or not to use SSL.
  • The same file could be browsed using both the http:// and https:// in the URL.
  • It has not been demonstrated but checking the Require secure channel (SSL) check-box on the web-site itself would force all of the resources under that web site to be invoked over SSL which may not be a desirable behavior. You can check that box for the web-site and browse both of the pages over HTTP and HTTPS; this time around, you would not be able to browse pages over HTTP and would get an error from the server.

Require SSL for Secure.aspx page

This is not what we want! We want Secure.aspx page to use SSL all the time. We would have to forcefully require SSL for that page.

Select your virtual directory in Inetmgr, right click on the Secure.aspx page and select Properties. This will launch the Properties dialog-box for that file. On that dialog-box, click on the File Security tab and look @ the Secure communications section @ the bottom. This should look like the following:

Click on the Edit button and it will show you the following screen that you can use to enable SSL for that page.

Check the Require secure channel (SSL) box and click on OK. Don't change anything else on that dialog box. By doing that, we are forcing that SSL must be used while accessing the Secure.aspx page. Let's browse the Secure.aspx page over both the HTTP and HTTPS protocols.

Browsing the page over HTTP results in the HTTP error 403.4

As you can see, the web server has refused to serve the content because the client did not request content over HTTPS! Note that the similar request from the client to view the Secure.aspx page over HTTP had succeeded earlier because we had not forcefully required SSL for that page at that time, but after requiring SSL, the page can only be viewed securely.

Browsing the same page over HTTPS results in the following:

 

Conclusion

  • We can force SSL for the selected resources on the server. This need not be forced at the web-site level. All we need to do is import an SSL certificate on the website and then require SSL for those selected resources.
  • By the same token, we can require SSL for everything that lives under a virtual directory or folder for that matter.

So this should clarify some of the issues surrounding the concept of enabling SSL on selected resources.

Resources

Microsoft also recommends using SSL on selected pages. See the following for more information.

Improving ASP.NET Performance (read "Only Use SSL for Pages That Require It" section)

Checklist: ASP.NET Performance (Read "Security Considerations" section)

SSL Capacity Planning (read "Understanding SSL Performance" section)

Ensure that Secure Content is Served Over HTTPS Only

Information about working with Certificates in IIS 6.0

HOWTO: Use IIsWebFile to fine grain control IIS behavior

SSL Diagnostic Tool - This is a nifty tool for debugging SSL related issues.


 
Categories: IIS 6.0

I had a discussion with one of the developers about using SSL on web sites that use host headers. My practical experience with using SSL on such web sites had been successful in the past and my understanding is that it is possible to use SSL for such web sites but that developer thought otherwise.

I had used the following resources in the past for achieving that. I hope that clarifies the confusion about using SSL for the web sites that use host headers.

Configuring SSL Host Headers

Creating Multiple Sites Using Host Header Names (IIS 6.0)


 
Categories: IIS 6.0