This is only required if you are accessing the entire cluster with the Site Manger. If you only hit one of the cluster members with the Site Manager client, then you will be fine.
MCMS does not require affinity for forms authentication. As long as the encryption keys are all synchronized, then any of the servers in the cluster can handle an authentication ticket generated by other servers in the cluster.
[Back to Top]
Topic: Forms authentication keys not synchonized
I have setup an MCMS cluster using two MCMS server machines. When accessing each server separately, everything is fine. However, when accessing the cluster I see broken images.
The MCMS encryption keys are synchronized what did I miss?
Answer
Besides the MCMS encryption key, you also have to ensure that the ASP.NET encryption keys used to encrypt the authentication cookies are synchornized.
By default, these encryption keys are set to autogenerate. This will cause each machine to have a different encryption key. Therefore, only the machine that generated the encryption key will be able to decrypt the data.
To resolve this you need to follow the instruction in this article:
312906 - HOW TO: Create Keys by Using Visual C# .NET for Use in Forms Authentication
[Back to Top]
Topic: Credentials are not accepted in DCA on Windows XP
My credentials are not accepted when trying to enter the system account in the Database Configuration Assistant on Microsoft Windows® XP. What could be wrong?
Answer
This is an issue with the default XP security policy. To fix it, go to your Local Computer Policy and click Computer Configuration, Windows Settings, Security Settings, Local Policy, and then Security Options.
Change the "Network access: Sharing and security model for local accounts" setting to "Classic - local users authenticate as themselves".
[Back to Top]
Topic: DCA log
Where can I find a log of the Database Configuration Application (DCA)?
Answer
The default location for the DCA log is:
<system_drive>:\Program Files\Microsoft Content Management Server\LogFiles
[Back to Top]
Topic: Error message: "Cannot create a file when that file already exists"
When running the SCA or DCA, the following problem may be encountered:
An unknown error has occured
800700b7: Cannot create a file when that file already exists.
-2147024713
(ISOK File nrvirtualWeb site.cpp, Line 2335)
Answer
MCMS is trying to create an Internet Information Services (IIS) Metabase entry that already exists.
To resolve this problem remove the NR, CMS and/or MCMS virtual directory on the Web site you are trying to set the entry point to. Then run the SCA or DCA again.
[Back to Top]
Topic: Error message: "error '76' - Path not found"
After installing a hotfix, the DCA doesn't start up anymore - we get an error saying "error '76' - Path not found". The event log then shows some sort of VB error occured. We've tried un-installing the hotfix, but that does not fix the problem.
How can we get the DCA working again without re-installing MCMS?
Answer
This is a known problem with some hotfixes if your MCMS installation path differs from the standard path C:\Program Files\Microsoft Content Management Server.
Please ensure that the following registry keys points to your MCMS installation directory:
\HKLM\Software\NCompass\CmsInstallLocation
\HKLM\Software\NCompass\Resolution Content Server\dir
[Back to Top]
Topic: Error Message: "Failed to get connection string from ODBC."
I am getting the following error when I run the DCA. It occurs when I click the "Select Database" button. It appears as a popup, and in the event log as a VBRuntime error. Failed to get connection string from ODBC.
Failed to get connection string from ODBC.
Extended error: [What='Error in getting the ODBC connection'][LCID='1033'] [SourceFile='establishodbcconnection.cpp'][SourceFileLine='143'][DebugInfo=''][RecommendedAction=''] [ExtraInfo=''][UniqueErrorId='1'][Severity='5'][Source='NRDBHelper.dll'][CategoryId='0'] -2147352567 NRDBHelper.dll
How can I solve this problem?
Answer
There are two known reasons for this:
- the user running the DCA does not have the SeImpersonatePriviledge
To assign impersonation privileges
- Click Start, click Control Panel, click Administrative Tools, and then click Local Security Policies.
- In the Local Security Settings window, expand Local Policies, click User Rights Assignment.
- In the User Rights Assignment folder, right-click Impersonate a client after authentication, and then click Properties.
- In the Properties dialog box, click Add User or Group.
- In the Select Users, Computers, or Groups dialog box, add the appropriate user or group, and then click OK.
- In the Properties dialog box, click OK.
- There is a known bug in MCMS. Please request the following hotfix from Micrsoft support:
836259 - You receive an error message in the DCA when you select a database
[Back to Top]
Topic: Error message: "Invalid column name 'ID'"
When configuring a new MCMS database using the DCA I receive the following error:
Database creation failed
[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ID'.
[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'ID'.
207
Microsoft SQL-DMO (ODBC SQLState: 42S22)
How can I correct this problem?
Answer
This problem can happen if the DCA is run against a SQL database that has been configured with case sensitive database collation.
MCMS only supports databases with case insensitive collation.
[Back to Top]
Topic: Error message: "Method '~' of object '~' failed"
When the DCA is being run during the installation, I receive the following error message: "Method '~' of object '~' failed". What is the problem?
Answer
This can happen when Windows Script is not installed correctly or the latest version is not installed.
Please re-install the latest version from here: http://msdn.microsoft.com/scripting.
[Back to Top]
Topic: Error message: "Must Declare the varible @InsertedParentGuid"
After running the Database Configuration Application (DCA), the database population process stops with the following error message:
Database creation failed [Microsoft][ODBC SQL Server Driver][SQL Server]Must Declare the varible @InsertedParentGuid'. -2147221367 Microsoft SQL-DMO(ODBC SQLState : 42000)
Answer
This could be caused by case-sensitive collation or locale settings on the SQL server. Ensure that you are using case-insensitive SQL Server settings.
[Back to Top]
Topic: Error message: "Rollback transaction request has no corresponding begin tran"
While running the conversion from MCMS 2001 to MCMS 2002 I get the following error:
-2147217601 ('80040f3f')
Rollback transaction request has no corresponding begin tran
What can be causing the problem?
Answer
This can happen when the transaction log file is full.
Extend the transaction log to increase without limit and try the upgrade again.
[Back to Top]
Topic: Error message: "Run-time error '91' - Object variable or With block variable not set"
The DCA fails with the error "Run-time error '91' - Object variable or With block variable not set". What could be wrong?
Answer
The DCA requires Windows Script version 5.6. This error message occurs if Windows Script 5.6 is not correctly installed.
Either reinstall Internet Explorer 6 SP1 or download Windows Script 5.6 from the following location and reinstall it:
http://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/733/msdncompositedoc.xml
Attention: this is necessary even if Windows Script 5.6 is already installed on the server.
[Back to Top]
Topic: Error message: "The roll back transaction request has no corresponding begin transaction"
When migrating my CMS 2001 database to CMS 2002 about 12% into the upgrade it gives the fiollowing runtime error:
2147217601 (80040f3f),
[microsoft] [odbc sql server driver] [sql server] The roll back transaction request has no corresponding begin transaction.
How can I correct this problem?
Answer
The upgrade routine tries to create a role named "CMSSystem" in the database. If a user with the same name already exists this problem occurs.
To resolve the problem, open the SQL Server Enterprise Manager and go to the Users of the selected database. Delete the user named "CMSSystem".
After the installation is complete you can create the account again, but it is recommended that you do not use the name "CMSSystem".
[Back to Top]
Topic: Error message: "User or role 'CMSSystem' already exists in current database"
After upgrading to MCMS 2002 SP1, I get the following error message while running the DCA:
Error encountered applying script C:\Program Files\Microsoft Content Management Server\Server\Setup Files\SQL Install\_Sp1Upgrade.sql
[Microsoft][ODBC SQL Server Driver][SQL Server]User or role 'CMSSystem' already exists in current database.
-2147206481
Microsoft SQL-DMO (ODBC SQLState: 42000)
What could be wrong?
Answer
The upgrade routine tries to create a role named "CMSSystem" in the database. If a user with the same name already exists this problem occurs.
To resolve the problem, open the SQL Server Enterprise Manager and go to the Users of the selected database. Delete the user named "CMSSystem".
After the installation is complete you can create the account again, but it is recommended that you do not use the name "CMSSystem".
[Back to Top]
Topic: SQL Server database not available in the DCA
Is there any reason why a SQL Server Database would not appear in the Database drop down list of the DCA? I've created a new Database using SQL Server Enterprise Manager and I can’t select it from the DCA because it isn't in the list.
Answer
There are 2 tasks involved when running the DCA. There are also 2 scenarios to consider.
Scenario 1 (Using trusted connection):
- The user who runs the DCA needs db_owner permission to the MCMS database
- The MCMS system account (i.e. trusted connection) needs db_ddladmin (for SiteDeployment), db_datareader, db_datawriter for MCMS day-to-day operations
- The DCA uses the desktop user (who runs the DCA) to access the database and assign database permissions to the MCMS system account
Scenario 2 (Using SQL Login):
- The SQL Login needs db_owner permission to the MCMS database
- The SQL Login needs db_ddladmin (for SD), db_datareader, db_datawriter for MCMS day-to-day operations
- DCA uses the SQL Login to access the database and assign database permissions to the SQL Login
Hence, the db_owner permission is needed for assigning permission to the account which performs MCMS day-to-day operations. That MCMS system account needs db_ddladmin, db_datareader & db_datawriter.
[Back to Top]
Topic: "Access denied" when accessing the site
When accessing my site I receive password prompts and see an "Access Denied" message. Why does this happen?
Answer
There are several possible reasons for this behaviour:
- You added a hard link to a Posting that the current user does not have rights to.
- The ASPNET account (IIS 5) or Application Pool Acount (IIS 6) does not have the SeImpersonatePriviledge.
- Your machine has MCMS 2002 Standard Edition installed, and the server name configured in the SCA is not identical to the machine name.
[Back to Top]
Topic: COMException 0x80041b58
The following exception occurs when I browse my web site: COMException (0x80041b58). What can be the reason?
Answer
There are several different reasons for this. Check the detailed call stack.
- SeImpersonatePriviledge missing:
Windows 2000 with SP4, Windows Server 2003 and Windows XP with SP2 implement a new priviledge which needs to be assigned to the ASPNET account (IIS 5) or to the Application Pool Account (IIS 6).
[COMException (0x80041b58)]
Microsoft.ContentManagement.Interop.Publishing.CmsHttpContextClass.Initialize(String currentUrl, String httpHostName, Int32 serverPort, Boolean isSecureServer, Int32 iisInstanceId, String remoteMachineAddress, String authenticationType, String authenticationToken, Int32 windowsUserHandle, String ClientAccountName) +0
Microsoft.ContentManagement.Publishing.CmsHttpContext.initialize(IntPtr windowsToken, String cmsAuthToken, String clientUserName, String clientAccountType) +297
Microsoft.ContentManagement.Publishing.CmsHttpContext.getCmsHttpContextFromIdentity(HttpContext httpContext) +1088
Microsoft.ContentManagement.Publishing.CmsHttpContext.get_Current() +57
The Account running the ASPNET_WP worker process is missing the SeImpersonatePrivilege privilege when Windows 2000 SP4 is installed. On member servers this is the ASPNET account or a different account configured in either machine.config or web.config. You need to add the SeImpersonatePriviledge to the account running the ASPNET_WP worker process.
On Windows 2000 domain controllers with .NET Framework 1.1 the default account is not the ASPNET account but the IWAM_<machinename> account.
A solution is provided in the CMS 2002 SP1 Readme file.
- Known bug in the the PostingObject.Approvers(Boolean) method:
[COMException (0x80041b58): Server error. Contact the site administrator.]
Microsoft.ContentManagement.Interop.Publishing.IRcwPosting.get_Approvers(Boolean doExpandUserGroups) +0
Microsoft.ContentManagement.Publishing.Posting.Approvers(Boolean doExpandUserGroups) +47
Request MCMS hotfix 828278
-
Known bug in SiteDeployment that can cause a database inconsistancy
[COMException (0x80041b58): Server error. Contact the site administrator.]
Microsoft.ContentManagement.Interop.Publishing.IRcwSearches.UserPostingsInPr
oduction() +0
Microsoft.ContentManagement.Publishing.Searches.UserPostingsInProduction() +38
[CmsServerException: Server error. Contact the site administrator.]
Microsoft.ContentManagement.Publishing.Searches.UserPostingsInProduction() +71
Microsoft.ContentManagement.WebAuthor.ProductionManager.BindDataGrid() +29
Microsoft.ContentManagement.WebAuthor.ProductionManager.Page_Load(Object
sender, EventArgs e) +387
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +750
Request hotfix 843027
-
Known bug in MCMS
[COMException (0x80041b58): Server error. Contact the site administrator.] Microsoft.ContentManagement.Interop.Publishing.IRcwSearches.UserApprovalsPending() +0
Microsoft.ContentManagement.Publishing.Searches.UserApprovalsPending() +38
[CmsServerException: Server error. Contact the site administrator.] Microsoft.ContentManagement.Publishing.Searches.UserApprovalsPending() +70
Microsoft.ContentManagement.WebAuthor.ApprovalAssistant.BindDataGrid() +62
Microsoft.ContentManagement.WebAuthor.ApprovalAssistant.Page_Load(Object sender, EventArgs e) +518 System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +29
System.Web.UI.Page.ProcessRequestMain() +724
Request hotfix: 843027
-
Problem uploading a resource file
[COMException (0x80041b58): Server error. Contact the site administrator.]
Microsoft.ContentManagement.Interop.Publishing.CmsApplicationContextClass.AcceptBinaryFile(String filename)
Microsoft.ContentManagement.Publishing.CmsContext.AcceptBinaryFile(String
filename)
This usually happens if
- the file to be uploaded has 0 byte size. MCMS does not support uploading files with 0 byte size
- the MCMS system account does not have read permissions on the file to be uploaded.
References
1.0 specific:
315158 - FIX: ASP.NET Does Not Work with the Default ASPNET Account on a Domain
1.1 specific
824308 BUG: IWAM Account Is Not Granted the Impersonate Privilege for ASP.NET
[Back to Top]
Topic: DCA log
Where can I find a log of the Database Configuration Application (DCA)?
Answer
The default location for the DCA log is:
<system_drive>:\Program Files\Microsoft Content Management Server\LogFiles
[Back to Top]
Topic: Enabling TraceListener Support
When using Connector for SharePoint Technologies I'm having problems synchronizing and/or retrieving my content from my SharePoint Document Libraries. Are there any troubleshooting steps I can take?
Answer
The WssDocumentUpdater tool is a stand-alone command line utility that is included with MCMS 2002 Connector for SharePoint Technologies. With the WssDocumentUpdater tool, you can update the content of the WssPlaceholder objects in the MCMS repository. When TraceListener support is enabled, Microsoft® Product Support Services (PSS) can more effectively troubleshoot issues with the WSSDocumentUpdater tool.
The WssDocumentUpdater tool provides TraceListener support for errors, warnings, and verbose trace messages. The TraceSwitch class that the WSSDocumentUpdater tool uses is Microsoft.ContentManagement.SharePoint.Updater.
Enable TraceListener support for the WSSDocumentUpdater tool
- In the directory that contains the WssDocumentUpdater.exe file, create a configuration file that is named WssDocumentUpdater.exe.config.
- Add the following code to the configuration file:
<configuration>
<system.diagnostics>
<switches>
<add name="Microsoft.ContentManagement.SharePoint.Updater" value="4" />
<add name="Microsoft.ContentManagement.RepositoryInterfaces" value="4" />
</switches>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="myTracingListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="WssDocumentUpdater.log" />
</listeners>
</trace>
</system.diagnostics>
</configuration>
-
Save the file.
-
Run WssDocumentUpdater.exe. A log file that is named WssDocumentUpdater.log is created in that directory. To change the path and file name, change the initializeData property in the configuration file.
Note You can use this same method of tracing with the WSS Document Library Finder tool that is used with the SharePointPlaceholder server control. To do this, change the Web.config file for the application instead of the WssDocumentUpdater.exe.config file for the application.
[Back to Top]
Topic: Error message: "Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)"
Suddenly my server no longer allows me to do any updates to the database. Neither in Site Manager, nor in Web Author, nor in VS.NET Template explorer.
The error messages vary. Sometimes I get an ODBC error, sometimes I see the following error message: "Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)."
How can I correct this problem?
Answer
This problem can happen when recursive triggers are allowed on the MCMS database. This is not allowed.
To correct the problem use the following steps:
- Open Enterprise Manager
- Right click on the affected database
- open the Properties window
- open the Options tab
- uncheck the "Recursive triggers" checkbox.
[Back to Top]
Topic: Error message: "Server Application Unavailable"
When browsing my Web site I receive the following error message:
Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.
The event log do not show any details. What could cause this problem?
Answer
If this is a multi processor or hyper threaded machine, check out the following KB article:
821157 "Server Application Unavailable" error message if a DLL is loaded in the 0x33A20000 address space and you request an ASP.NET page"
To correct this problem please install Microsoft .NET framework 1.1 Service Pack 1 (Windows Server 2003 version, Windows 2000 version)
[Back to Top]
Topic: Incompatible placeholder type
Error message:
Server Error in '/Woodgrove' Application.
[HtmlPlaceholderControl "PlaceholderHtmlControl1"] The PlaceholderToBind "HomeMainContent1" was of an incompatible type "Microsoft.ContentManagement.Publishing.Extensions.Placeholders.XmlPlaceholder"
Answer
This error occurs when a placeholder control is bound to the wrong type of placeholder object. For example, a single image placeholder control cannot be bound to a placeholder derived from the XMLPlaceholder object.
If you bind placeholders using the dropdown in the Microsoft® Visual Studio® .NET template property window, this should not happen. Only valid placeholder types are shown in the dropdown list. However, it is possible to get this error if you bind placeholders by altering the code directly in the template file.
[Back to Top]
Topic: Parser error
Error message:
Server Error in '/Woodgrove' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. Parser Error Message: Could not load type 'Woodgrove.Global'.
Source Error:
Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="Woodgrove.Global" %>
Answer
This error commonly occurs when the project has been altered and needs to be rebuilt in Microsoft® Visual Studio® .NET. Typically, a codebehind page has been altered.
[Back to Top]
Topic: PlaceholderToBind Not Found
Error message:
Server Error in '/Woodgrove' Application.
[HtmlPlaceholderControl "PlaceholderHtmlControl1"] The PlaceholderToBind "HomeMainContent1" was not found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Answer
This happens when the placeholder object in the ASPX file is bound to a non-existent placeholder in the database. Placeholders associated with a template are stored in the template gallery item (TGI). You can view the collection of placeholders using the Microsoft® Visual Studio® .NET template property window.
[Back to Top]
Topic: Template debugging in Microsoft Visual Studio .NET
I tried to debug one of my templates but it does not work. How can I enable this?
Answer
The easiest way to achieve this is to use one of these methods:
Use the 'Debugging Start Page'
- In the web.config change debug to True.
- In IIS turn on ASP client and server side debugging for ASP (Home Directory -> Configuration)
- Create an HTML file in your project that has a link to a page using the CMS template that you want to step through (see example below)
- Set the HTML as the start page for the project (right-click the file in VS) - check each project
- Set the project properties to turn on ASP.Net debugging
- Set the web application project (not the webcontrollibrary - if you have one) as the startup project
- Start debugging and click the link to the page using the template that you want to debug
- Symbols can be added in the solution properties under 'Common Properties' -> 'Debug Symbol Files'
Example start page:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
<TITLE>Debugging Start Page for Woodgrove</TITLE>
</HEAD>
<BODY>
<a href="http://localhost/WoodgroveNet/About+Woodgrove/Press+Releases/August+30,+2001.htm">
Navigate to CMS and debug.</a>
</BODY>
</HTML>
Attach directly to the process:
- Open the project in Visual Studio .NET
- Set your breakpoints
- Click "Debug" - "Processes"
- Select the "aspnet_wp.exe" (IIS5) or "w3wp.exe" (IIS 6) process in the list (if it does not show up, select the "show processes in all sessions" button)
- Click "Attach..."
- Ensure that "Common Language Runtime" is selected
- Click "OK" and "Close"
- Open a new Internet Explorer instance and browse to your page. Visual Studio .NET will take control when the breakpoint is hit and let you debug your application.
[Back to Top]
Topic: Troubleshooting 500 server error
I receive 500 server errors. What could be wrong?
Answer
500 server errors are internal processing errors. Try the following troubleshooting suggestions:
- Ensure that there is no web.config or global.asax file in the root of your Web site as this can cause such issues.
Which .NET framework version do you use? If it is 1.1 ensure that
<pages smartNavigation="false" validateRequest="false" />
is included in your web.config. If you receive the error using one of your templates check the web.config in your template project. If you receive the error using Site Manager or Authoring Connector, check the web.config in the /MCMS directory.
If it is .NET framework 1.0 ensure that the 'validateRequest' entry is NOT in the web.config.
-
Check whether there is a global.asax or a web.config in the root of your Web site. If one of these files exists, remove or rename it and test to see if the problem is gone. An error in one of these files can cause these kind of problems.
-
Check the event log for errors. Often an event log entry is written when a 500 error is reported
-
If this is a multiproc machine and/or hyperthreading is enabled and .NET framework 1.1 is installed then the following hotfix is required: 821157.
Update: this fix is now also included in Microsoft .NET framework 1.1 Service Pack 1 (Windows Server 2003 version, Windows 2000 version)
-
Run a virus scanner as a virus can cause such an errors.
-
If the problem happens in SiteManager try to access the following URL in a browser to see if an error occurs: http://localhost/NR/System/ClientUI/login.asp
If the problem happens during Site Deployment in SiteManager try to access the following URL in a browser to see if an error occurs: http://localhost/mcms/sitedeployment/cmsxmlstub.aspx
-
If neither of these help, try the request from a machine which is not the MCMS server machine and ensure that
<customErrors mode="Off" />
is set in your web.config. See above about how to determine which web.config to use. Now use Network Monitor to take a trace to see the complete error response sent by MCMS.
[Back to Top]
Topic: Wrong image version
I find that the wrong versions of images are showing up on my site. What could be happening?
Answer
The issue of the wrong version of images is likely a caching problem. It can be a proxy server issue, or an Internet Explorer caching issue. MCMS will most likely limit the occurrence of this (since it will handle caching resources). But it is, of course, still possible to use files off the file system.
For example, Internet Explorer caches the pages it downloads to avoid downloading the same file again (saving bandwidth). This feature works by comparing the file dates of the locally cached file with that of the file on the server. Any server files older than those of the file in the user's Microsoft Internet Explorer cache, are not downloaded.
In some cases, the new version of the image was created after the older versions were last modified. When users visited the site, Microsoft Internet Explorer downloaded and cached the the old image because the file was newer. But when you roll back the images to the original, the file date of the original image file was older than the new file. When Microsoft Internet Explorer sent its request to the server, the server checked dates and reported that the old file (that Microsoft Internet Explorer cached) was still newer than the file on the server and Microsoft Internet Explorer did not download the file from the server.
To resolve this, we modified the dates on the server files so that they were all last modified today. This will force any browsers to download the new files and thus, the correct images will appear.
Even though the files are different, it does not mean they will be downloaded by web browsers; the modified date of the new file must be newer than that of its predecessor.
To check the fix, it should be confirmed on a work machine and a home user's machine (if there is a proxy) without clearing the file cache. File downloads should be monitored using Network Monitor. This is a global fix and should cause every visitor to the site to see the new file without having to clear the cache in their browser.
[Back to Top]
Topic: ASP.NET not registered in IIS
When I browse to a posting, the page shows me the source code instead of rendering the content.
Answer
ASP.NET may not be registered correctly in Internet Information Server (IIS). Run the following command to reregister ASP.NET with IIS:
(for .NET framework 1.0)
"\WINNT\Microsoft.NET\Framework\v1.0.3705\aspnet_regiis.exe" -i
(for .NET framework 1.1)
"\WINNT\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe" -i
[Back to Top]
Topic: Cover.asp
When I access an empty channel, MCMS pulls up the /NR/Shared/Cover.asp page. How do I modify this page?
Answer
The reference to this page is hard coded in the MCMS server. You can modify this file but another option is to use a channel rendering script. This will allow you to add any code of your choosing.
[Back to Top]
Topic: Error message: "Bad Request (Request Header too long)"
A user with a large Kerberos Ticket (he is a member of 100 groups) is not able to access a Web site on Content Management Server 2002 SP1a running on Windows Server 2003.
He receives the following error message: "Bad Request (Request Header too long)"
Answer
It is possible to increase the request header limits using the Registry. You need to adjust the MaxFieldLength and MaxRequestBytes limits as shown in the following KB article:
820129 - INF: Http.sys Registry Settings for IIS
[Back to Top]
Topic: Error message: "service hung on starting" with MCMS 2002 SP1
I get "service hung on starting" after installing MCMS 2002 SP1. This is explained in the MCMS 2002 SP1 readme file but I don't like getting the message. Is there a way to avoid these messages?
Answer
This 7022 error is logged because of the tracing initialization of the ReHTMLPackager.dll filter which relies on Windows Management Instrumentation (WMI).
One simple workaround is to set the IISAdmin service to depend on the WMI service. This can be done by following these steps:
- Click Start, then Run, and enter RegEdt32.exe
- Browse to HKLM\System\Services\IISAdmin
- Double-click the DependOnService (REG_MULTI_SZ) value; this will open the Multi String Editor window
- Add "WMI" (without quotes) in the Multi String Editor window underneath RPCSS and ProtectedStorage
- Click OK
- Close RegEdt32
- Restart the computer
[Back to Top]
Topic: Event ID 2602 - An unrecognized request was received by the CMS ISAPI Filter
I have noticed that there are a lot of entries for “Event ID 2602” recorded in the application event log of my MCMS server:
Event ID 2602, Source: MCMS, Type: Warning, Date: 08/16/2004, Time: 3:20:24 PM, An unrecognized request was received by the CMS ISAPI Filter. The request was mapped to the CMS read-only resource cache virtual directory but the URL format did not correspond to a CMS Resource. The CMS ISAPI Filter did not process the request and allowed IIS to handle it instead. The requested URL was '/NR/rdonlyres/...'.
What does this mean?
Answer
This event is written whenever a request arrives that seems to address an MCMS managed resource that cannot be found in the MCMS repository. All requests going to /NR/rdonlyres are assumed to be MCMS managed objects.
This event is created for all URLs with this format that do not identify MCMS managed objects.
This can be caused by:
- Requests to SiteDeployment Reports which are located in the MCMS disk cache but are not managed objects.
- Requests to static objects placed in this location
- Requests to deleted resources. This can be caused if the posting containing such resources are cached somewhere and requested. Even if the posting is deleted on the MCMS server such cached instances can still be in some Proxy or search engine caches. If background processing already removed the resource then MCMS does not know that these have existed before and if such a cached item is requested in the browser the embedded images are requested from MCMS. Because these items no longer exist, the 2602 event is written.
[Back to Top]
Topic: Implementing an RSS feed for a MCMS Web site
Is it possible to create an RSS feed for content syndication for my MCMS site?
Answer
Yes this is possible. An RSS feed is very similar to a MCMS summary page. The major difference is that the content is served as XML rather than Html. But Html can be embedded if it is properly encoded.
Below is a sample of an RSS feed. It provides information about recent changes to the MCMS site. The code uses the NewPosting method of the searches object and returns a summary of the content.
To integrate the RSS feed nicely into the site you can create a channel names 'RSS' below the root of the Web site and bind the ASP.NET Web form that generates the feed as the Channel Rendering Script for this channel.
Here is the actual implementation:
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.ContentManagement.Publishing;
using Microsoft.ContentManagement.Publishing.Extensions.Placeholders;
namespace
MyCMSproject
{
/// <summary>
/// Summary description for RSS.
/// </summary>
public class RSS : System.Web.UI.Page
{
private string GetPostingSummary(Posting p)
{
if (p.Placeholders["Summary"] != null)
{
HtmlPlaceholder phSummary = (HtmlPlaceholder)p.Placeholders["Summary"];
return phSummary.Html;
}
else
{
return p.Description;
}
}
private string GenerateRssXml()
{
MemoryStream mem = new MemoryStream();
XmlTextWriter Xmlwriter = new XmlTextWriter(mem, Encoding.UTF8);
Xmlwriter.WriteStartElement("rss");
Xmlwriter.WriteAttributeString("version","2.0");
Xmlwriter.WriteStartElement("channel");
Xmlwriter.WriteElementString("title","Title of your Web site");
Xmlwriter.WriteElementString("link","http://www.yourWeb site.com";
Xmlwriter.WriteElementString("copyright","© Your Corporation. All rights reserved.");
Xmlwriter.WriteElementString("description","Description of your Web site");
Xmlwriter.WriteElementString("managingEditor","email of your responsible Editor");
Xmlwriter.WriteElementString("webMaster","email of your responsible Webmaster");
Xmlwriter.WriteElementString("generator","Stefan's RSS feeder 1.0.0.0");
PostingCollection pc = CmsHttpContext.Current.Searches.NewPostings(20);
pc.SortByLastModifiedDate();
foreach (Posting p in pc)
{
// I don't want include all channels here
if (p.Path.ToLower().StartsWith("/channels/publicChannel"))
{
Xmlwriter.WriteStartElement("item");
Xmlwriter.WriteElementString("title",p.DisplayName);
Xmlwriter.WriteElementString("link","http://www.yourWeb site.com"+p.Url);
// Date needs to use this format
Xmlwriter.WriteElementString("pubDate",p.LastModifiedDate.ToString("r"));
Xmlwriter.WriteElementString("guid",p.Guid);
Xmlwriter.WriteElementString("description",GetPostingSummary(p));
Xmlwriter.WriteElementString("author",p.CreatedBy.ClientAccountName);
Xmlwriter.WriteEndElement();
}
}
Xmlwriter.WriteEndElement();
Xmlwriter.WriteEndElement();
Xmlwriter.Flush();
mem.Position = 0;
StreamReader reader = new StreamReader(mem);
return reader.ReadToEnd();
}
private void Page_Load(object sender, System.EventArgs e)
{
Response.ContentType = "text/xml; charset=utf-8"; // its Xml, not Html
}
protected override void Render( HtmlTextWriter writer)
{
writer.Write(GenerateRssXml());
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();