Second Stanza

March 8, 2008

Team Foundation Server Installation Woes

Filed under: Team Foundation Server — Tags: — dfbaskin @ 11:05 pm

It is amazing how many things can go wrong with (I thought) a simple Team Foundation Server 2008 installation. I am using a dual-server setup in this configuration:

  • Windows domain.
  • SQL Server 2005 (on a separate machine)
  • SQL Server 2005 Reporting Services
  • MOSS 2007 Standard
  • Team Foundation Server 2008 (Workgroup Edition)

After I had set up MOSS and verified that it was running correctly, my first problem was the TFS installation itself, which I described here.

Once TFS was installed, Reporting Services was not working correctly, where I kept getting an “Access to the Port is Denied” error (the details are here on the MSDN forums). Maybe I missed within the installation documentation the place where it describes configuring Reporting Services after you’ve installed TFS, but that’s what I had to do. The documentation seems to indicate that TFS will configure Reporting Services for you, but I had to do the following to get it to work:

  1. I opened IIS Manager and changed the service account of the Report Server application pool from NETWORK SERVICE to the same service account as I was using for MOSS and TFS. This was the instance of Reporting Services running on the TFS/MOSS application tier.
  2. I started Report Services Configuration and selected the Web Service Identity tab and verified that the Report Server application pool was used for both the Report Server and Report Manager applications. I then selected ‘Apply’ (this, I believe, assigns the proper permissions to the service account).
  3. I restarted IIS.

I then noticed an error in the event log:

Event Type: Error 
Event Source: Office SharePoint Server 
Event Category: Publishing Cache 
Event ID: 5785 
Date: 3/7/2008 
Time: 10:07:17 PM 
User: N/A 
Computer: TEAMSYS 
Description:   

Unable to connect publishing custom string handler for output caching.   

IIS Instance Id is '1843996332', Url is 'http://teamsys/Reports/images/16prop.gif'.

This error was resolved by removing the PublishingHttpModule from the ReportServer and Reports sub-sites of my MOSS site (described here).

After this, I tried to create a TFS project, but was denied access to the TFS server. I had signed on to my developer account (rather than the administrator account) but had forgotten to add my developer account to the “Licensed Users” list of TFS. My bad.

Once I had created the TFS project, I then started to browse the project looking at the project items. Things seemed ok until I tried to look at the reports. An error was generated, but there were no details. I used the technique described here to enable remote errors for Reporting Services and found the following:

An internal error occurred on the report server. See the error log for more details. 
(rsInternalError) Error executing child request for /ReportServer/Pages/ReportViewer.aspx.   

The type Microsoft.SharePoint.Portal.Analytics.UI.ReportViewerMessages, Microsoft.SharePoint.Portal, 
Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c does not implement 
IReportViewerMessages or could not be found.

This issue was resolved using the technique described here:

Installing SQL Reporting Services and MOSS 2007 on the Same port (default: 80)

If you have both MOSS 2007 (Microsoft Office SharePoint Server) and Reporting Services ( not in SharePoint integrated mode) installed on the same IIS virtual server, then you have to make the below updates in web.config for them to work

1)      In the Root web.config to comment out the below. Otherwise the reportserver will give sessionState partitionResolver Issue
<!– <sessionState mode=”SQLServer” timeout=”60″ allowCustomSqlDatabase=”true” partitionResolverType=”Microsoft.Office.Server.Administration.SqlSessionStateResolver, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” />
–>

2)      In both Reportserver  and ReportManager vdir web.config, the following should be added under appSettings. Otherwise you will get ReportViewer error messages
<remove key=”ReportViewerMessages” />

This is because , by default MOSS uses /reports url for it’s report center and it’s the same virtual dir url for native SQL Reporting Services report manager as well.

Following the second item, I added the <remove key=”ReportViewerMessage”/> element to both the ReportServer and ReportManager web.config files. For ReportServer, I had to add the <appSettings>…</appSettings> element as well as the <remove> element. For ReportManager, the <appSettings> element already existed so I only had to add the <remove> element. Don’t make the mistake (as I did) of adding the <appSettings> element berfore the <configSections> element. It will cause the ASP.NET application to fail.

For the first item, however, I took a bit different tack. Instead of commenting out the <sessionState> element from the root web.config, I just copied the <sessionState> element from the root element into the Report Manager web.config.

<sessionState mode="SQLServer" timeout="60" allowCustomSqlDatabase="true" 
              partitionResolverType="Microsoft.Office.Server.Administration.SqlSessionStateResolver, 
                                     Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, 
                                     PublicKeyToken=71e9bce111e9429c" />

Not knowing exactly what the SqlSessionStateResolver class actually does, I assume that this is a better option since commenting out the original <sessionState> element in the root web.config will cause the ASP.NET application to use the default in-process session state and will prevent you from installing additional web server front-ends.

Note that the Report Server web config already has session state disabled:

<sessionState mode="Off" />

After restarting IIS (because I’m hopelessly pedantic), everything appears to be working now. No more errors in the event log and I can browse the reports along with the rest of the TFS project.

Create a free website or blog at WordPress.com.