User Guide

Revision: 3.0.1


Table of contents

Introduction. 3

Features. 3

Help Server versus plain HTML help files. 4

Product Editions. 5

Editions Comparison Matrix. 5

System Requirements. 6

Installation. 6

Redistribution. 6

Documentation. 6

User guide. 7

Deployment 7

Automatic Installation. 7

Manual Installation. 7

Usage. 7

Configuration. 8

Web.config. 8

Integration. 11

Opening a specific help file. 11

Opening index topic. 11

Full-text search. 11

Customization. 12

Changing the title \ header text 12

Changing the header 12

Applying different theme. 12

Theme screenshots. 12

Troubleshooting. 13

General troubleshooting. 13

Reporting bugs. 13




Help Server is ASP.NET application exposing content of .Chm and .HxS help files on the web allowing users all over the world to browse them online. Help Server user interface is quite similar to built-in Windows Help, so almost anyone knows how to use it efficiently.


Brings more visitors to your web site

Your help will be available to all the spiders and crawlers. They are automatically provided with "scriptless" version of TOC. This ensures the whole help will be indexed.


Makes your visitors happier

Professional help browser adds valuable mark to overall user experience. Help Server brings well-known user interface to the web charging it with AJAX. It is compatible with all leading browsers, including Internet Explorer, Firefox and Chrome.

Keyword index and full-text search relying on Lucene.Net allow users to get the help faster.



You're still thinking how to integrate help into your web application, conceptual documentation or Wiki? Help Server provides URL API allowing to navigate to a specified topic, keyword or full-text search result. Check out DataObjects.Net Wiki for examples of such integration.

 Help Server UI is built with a set of its own ASP.NET controls. All these controls as well as all .aspx pages using them are shipped with full source code, so it's possible to customize almost any part of UI. The only closed part is HelpEngine used by these controls - it's shipped as a set of assemblies.



Logo and all visible strings\messages are fully customizable (some of such for licensed users only)

2 skins are bundled into installation package: one is similar to new MSDN Library Viewer (Grey), another is close to Office 2007 (Blue)

Config.xml file allows to join multiple .Chm, .HxS and HTML files into the global table of contents.


High availability

Help Server provides HTTP caching headers allowing browsers to aggressively cache help content. This positively affects both on user experience and web server load.

Zero downtime on updates of help files in the runtime, or the whole collection of them! Such updates may continue for many hours - client will be able to browse old help collections until it's finished, and will notice the update only by tree refresh on the next subsequent request. The moment of help update completion is determined automatically by a delay passed after last update in "Resources" folder.

Extremely large help collections are supported. Our own help contains about 50000 topics, and it easily handles it. Browsing a collection of 100000-1000000 documents shouldn't be a problem at all.



Help Server versus plain HTML help files

So why it's better to use Help Server rather than to publish HTML files from which help is built? Let's look on just some of benefits:

Table of contents can be very large in large help collections. Imagine delivery of 1Mb table of contents to the client via slow connection! Currently plain HTML + no AJAX = worse user experience.

Full-text search and keyword index aren't provided by HTML help generators, or their support is quite poor: some of them provide client-side implementation on JavaScript, which in fact isn't suitable for large help files.

Help Server ensures there will be no downtime at all on any help updates. Downtime of web site showing online help on updates of help collection is obviously anticipated by users.

It's much faster and convenient to copy\replace just a single compressed .Chm or .HxS file rather than replace 10000 flat HTML files - especially when web site is hosted on a distant server. Few thousands of small files may take hours to get uploaded. Also note that compression factor is usually near 90% for help files.

It's more convenient to deal with user interface you already know - Help Server UI is almost a clone of MSDN Library Viewer.


There are certainly lots of other factors. For example, Help Server UI looks better than the same provided by all HTML help generators we know.

Product Editions

Help Server is available in 3 editions. All differences between them are shown in the table below.

Editions Comparison Matrix

Feature \ Edition




Table of contents


   Maximal size

100 nodes


Top frame


   Copyright & link to

Always presents

Can be removed

Source code


   Web application source code


   Help Server controls source code



   Core & Chm assemblies source code


Upgrades \ updates


   Free update period*


12 months









   Response time*


24 hours

License type


Per web server

Per company or individual




Online order

Price & purchase options


   Price (EUR)

0 (Free)



   Online order page (secure)


Buy now

Buy now

   Upgrade discount


   Upgrade order page (secure)

Buy now

Buy now

   Custom skin design, order page


395 (Buy now)

   Pay by wire transfer

Click here to request the invoice by e-mail



    "Pay by wire" discount





All unspecified features are absolutely the same for all Editions

"-" means "Not applicable"

"Release period" is average period between subsequent releases of the product

"Free update period" is the period of free product updates after the moment of purchase. All upcoming versions (releases) of product, including major version updates, are electronically delivered to the customers without any additional charges during this period

"Support response time" is maximal amount of time that can be spent on the first response for regular support requests; bug reports, as well as other cases requiring testing may require more time than 24 hours

All online order pages are secure.




System Requirements

To use Help Server you should have the following components installed:

.NET Framework 3.5

IIS 6.0+ with ASP.NET 3.5.


If you're planning to modify its source code, you need Visual Studio 2008.


To install Help Server you should simply execute the installer. There are several possible names of the installer (it depends on the download location): HelpServer_X.Y.Z.exe, HelpServer.exe, HelpServer_X.Y.Z_Edition.exe (for example, HelpServer_X.Y.Z_Express.exe), HelpServer_Edition.exe (for example, HelpServer_Express.exe).


Note: If you don't have a Redistributable license, you may not redistribute any part of Help Server. Information below is provided only for Redistributable license owners.

Redistributable license owners may distribute Redistributable Part of Help Server along with their products, but redistributable copy may be used for browsing product help files, or help files of its components.

"Redistributable Part" is exactly the content of "Web" folder of the file hierarchy created by Help Server installer. Everything located inside it can be distributed along with your products.

Note: You may not distribute the Help Server with any sort of software that attempts to replace or duplicate in part, or in whole, the functionality of it. Essentially, if your product makes use of the Help Server and your application's functionality does not reproduces the functionality of it, you are free to distribute the Help Server with your application.

Please note that this description is not a binding license agreement, you should refer to the License Agreement bundled with the product for details.


Help Server includes the following documentation:

User Guide. Describes product features, installation instructions and user guide

Revision History.




User guide


Automatic Installation

To install Help Server automatically, you should just start its installer.

Help Server installer performs the following tasks:

Copies product files into installation folder

Creates IIS virtual folder named "HelpServer" pointing on "<InstallationFolder>\Web" folder on the local web server (http://localhost/HelpServer/)

Properly applies NTFS permissions on newly installed files


Note: if you're owner of Server \ Site \ Redistributable license, you should manually copy license file (ProductKey.txt) to the installation folder in addition.

Manual Installation

Copy the Redistributable Part ("<InstallationFolder>\Web" folder) to the desirable location on the web server

Create IIS virtual folder having any desirable name and pointing on "Web" folder. The simplest way to do this is to open the "Properties" window (in Windows Explorer) of "Web" folder, select "Web Sharing", click on the "Share this folder" radio button, type the name of the virtual folder and press "OK" button

Allow anonymous access to newly created web application: run "compmgmt.msc" (Computer Management Snap-in), go to "Services and Applications" -> "Internet Information Services (IIS) Manager" -> "Web Sites" -> "Default Web Site" -> corresponding application ("HelpServer") -> Properties (accessible by right-button click) -> "Directory Structure" (tab), click "Edit" button in "Authentication and Access Control" group and check "Enable anonymous access" checkbox

Ensure, that "Everyone" group has read and execute permissions in "Web" folder

On Windows 2000\XP: ASPNET account has read and execute permissions in "Web" folder

On Windows Server 2003: IIS_WPG group has read and execute permissions in "Web" folder

License file installation (Express Edition doesn't require it): Copy the license file (ProductKey.txt) to the installation folder or to some other location inaccessible from the web (in this case you should properly point on it by productKeyPath attribute of Web.config file). ASPNET user (IIS_WPG group on Windows Server 2003) should be able to access this file (i.e. read permission on this file).


Note: There is a set of script files located in "<InstallationFolder>\_Setup" folder - they can perform most of these tasks automatically. If you're owner of Redistributable license, you can use them inside installers of client applications.


Help Server provides web interface for accessing the content of help files located in "Resources" folder inside web application (by default the part to this folder is "<InstallationFolder>\Web\Resources").

Navigate to http://localhost/HelpServer/ to open default Help Server installation.

If you aren't intended to use Web.config file to configure Help Server, you may simply put desirable .Chm or .HxS help files into "<InstallationFolder>\Web\Resources" folder - Help Server will expose all these files (note that by default it displays all changes in the Resources folder only after 30 sec. delay).

Note: After the installation Resources folder contains a single help file "HelpServer.chm".




There is a single configuration point in Help Server:

Web.config - standard file for any ASP.NET application; Help Server takes the whole set of runtime options from it.


The following additional sections and attributes can be defined in Web.config:

helpServer section

Help Server configuration section. Must exist in any case.

Attribute name



Title tag value on Default.aspx - help collection title. Default value is "Online Help on".


A string displayed by Header.ascx - help collection title\description displayed in header. Default value is "Your Product Online Help".


Note: from v3.0.1 this message is displayed only for "Default" theme. Other themes turn it off by making invisible LogoText CSS class, but making visible LogoImage CSS class instead. See "Web\Default.aspx" file for further details on this.


Specifies the theme to use. There are the following themes:

-       Default (similar to Ocean, but with textual header)

-       Ocean

-       OceanVertical (we believe the nicest one)

-       BlackCurrant

-       BlackCurrantVertical

All theme files are located in "Web\App_Themes" folder.


Path to tracker code file to inject into content (.htm, .html) files relatively to the web application's folder.


A period between last change in Resources folder and the moment of help collection rebuilding, in seconds. Default value is 30 seconds.


Path to ProductKey.txt file relatively to the web application's folder. Default value is "..\ProductKey.txt".


Temporary files folder path.


helpServer\contentCompression section

Content compression configuration.

Attribute name



Preferred compression algorithm. "gzip" is the only recommended value here.


helpServer\contentCompression\contentTypes\contentType section

The type for which content compression is applicable.

Attribute name



Content type to compress. E.g. "text/javascript".


helpServer\clientSideCachingPolicy section

Client side caching policy configuration.

Attribute name



Client side caching expiration time for static items. E.g. "7.00:00:00" (7 days).


Client side caching expiration time for content items. E.g. "00:30:00" (30 minutes).


helpServer\toc section

Table of content display settings.


helpServer\toc\icons section

Table of content icon display settings.

Attribute name



Indicates whether TOC icons must be displayed or not.


helpServer\toc\icons\add section

Particular TOC icon display settings.

Attribute name



CSS class to apply to icon element. E.g. "Namespace". In particular, allows to set icon image. See definition of this class in "Web\CSS\Tree.css" for further details.


Full TOC title path regular expression to bind the icon with. E.g. "/Support Forum Archive/".


TOC item attributes. "IsFile" or "IsFolder".


helpServer\toc\nodes\add[\nodes\add\...] section

Describes a particular TOC node.

Attribute name



Node title. E.g. "Help Server".


Node virtual name (used in virtual path to this node). E.g. "HelpServer".


Node file. E.g. "HelpServer.chm".


Default Web.config file (bold parts highlight the places to pay attention to):

<?xml version="1.0"?>



    <section name="helpServer" type="Xtensive.HelpServer.Web.HelpServerSection,Xtensive.HelpServer.Web"/>

    <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

          <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>

          <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

          <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

          <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>







      title="Online Help at &lt;Company&gt;.com"

      headerText="&lt;Product&gt; Online Help"





    <contentCompression preferredAlgorithm="gzip">


        <contentType value="text/javascript"/>

        <contentType value="text/css"/>

        <contentType value="text/html"/>

        <contentType value="text/plain"/>



    <clientSideCachingPolicy staticFilesExpireIn="7.00:00:00" contentFilesExpireIn="00:30:00"/>



      <!-- If no nodes are described, the TOC is built automatically by Resources folder content -->


      <icons display="true">

        <!-- You can use custom icons for nodes in particular reference paths by

             redefining their CSS styles:

        <add cssClass="Article" pathRegex="/Support Forum Archive/" attributes="IsFile" />

        <add cssClass="Book" pathRegex="/Support Forum Archive/" attributes="IsFolder" />


        <!-- Icon definitions below provide standard icons for topics

            in XML documentation generated by SandCastle -->

        <!-- Uncomment to enable the definitions:

        <add cssClass="Namespace" pathRegex="\snamespace\s*(\(.+\))?\s*$" />

        <add cssClass="Pubclass" pathRegex="\sclass\s*(\(.+\))?\s*$"/>

        <add cssClass="Pubdelegate" pathRegex="\sdelegate\s*(\(.+\))?\s*$" />

        <add cssClass="Pubenumeration" pathRegex="\senumeration\s*(\(.+\))?\s*$" />

        <add cssClass="Pubevent" pathRegex="\sevent\s*(\(.+\))?\s*$" />

        <add cssClass="Pubfield" pathRegex="\sfield\s*(\(.+\))?\s*$" />

        <add cssClass="Pubinterface" pathRegex="\sinterface\s*(\(.+\))?\s*$" />

        <add cssClass="Pubmethod" pathRegex="(\smethod\s*(\(.+\))?\s*$)|(\sconstructor\s*(\(.+\))?\s*$)" />

        <add cssClass="Pubproperty" pathRegex="\sproperty\s*(\(.+\))?\s*$" />

        <add cssClass="Pubstructure" pathRegex="\sstructure\s*(\(.+\))?\s*$" />

        <add cssClass="Puboperator" pathRegex="\soperator\s*(\(.+\))?\s*$" />






    <compilation defaultLanguage="c#" debug="true">


        <add expressionPrefix="Res" type="Xtensive.HelpServer.Web.ResourceExpressionBuilder, Xtensive.HelpServer.Web"/>



        <add assembly="System.Core, Version=, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        <add assembly="System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

        <add assembly="System.Xml.Linq, Version=, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

        <add assembly="System.Data.DataSetExtensions, Version=, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>



    <customErrors mode="RemoteOnly"/>

    <authentication mode="Windows"/>


      <allow users="*"/>


    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true"/>

    <sessionState mode="InProc" stateConnectionString="tcpip=" sqlConnectionString="data source=;Trusted_Connection=yes" cookieless="false" timeout="20"/>

    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>

    <xhtmlConformance mode="Legacy"/>


      <add name="CompressionModule" type="Xtensive.HelpServer.Web.CompressionModule, Xtensive.HelpServer.Web"/>

      <add name="StaticFileModule" type="Xtensive.HelpServer.Web.StaticFileModule, Xtensive.HelpServer.Web"/>

      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>



      <add verb="*" path="StaticFile.axd" type="Xtensive.HelpServer.Web.StaticFileHandler, Xtensive.HelpServer.Web"/>

      <remove verb="*" path="*.asmx"/>

      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

      <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>




        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>





    <validation validateIntegratedModeConfiguration="false"/>


      <remove name="ScriptModule"/><add name="CompressionModule" type="Xtensive.HelpServer.Web.CompressionModule, Xtensive.HelpServer.Web"/>

      <add name="HsStaticFileModule" type="Xtensive.HelpServer.Web.StaticFileModule, Xtensive.HelpServer.Web"/>

      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>


    <handlers accessPolicy="Read, Write, Script, Execute">

      <remove name="WebServiceHandlerFactory-Integrated"/>

      <remove name="ScriptHandlerFactory"/>

      <remove name="ScriptHandlerFactoryAppServices"/>

      <remove name="ScriptResource"/><add verb="*" name="HsStaticFileHandler" path="StaticFile.axd" type="Xtensive.HelpServer.Web.StaticFileHandler, Xtensive.HelpServer.Web"/>

      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

      <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>





        <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">

          <providerOption name="CompilerVersion" value="v3.5"/>

          <providerOption name="WarnAsError" value="false"/>





    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">


        <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>

        <bindingRedirect oldVersion="" newVersion=""/></dependentAssembly>


        <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>

        <bindingRedirect oldVersion="" newVersion=""/></dependentAssembly>






        <jsonSerialization maxJsonLength="2147483644"></jsonSerialization>







Opening a specific help file

Example URL:

With anchor:

Without it: (will anyway redirect to anchored version)

Opening index topic

Example URL:

Full-text search

Example URL:





Changing the title \ header text

Both strings (title, header text) can be defined in Web.config - please refer to "Configuration: Web.config" section for additional information.

Changing the header

Feel free to modify Header.ascx (user control) as you wish.

Note: Copyright line (two lines in Express Edition) is rendered by one of Help Server controls, so you can't remove it by this way. If you really need to remove it, please contact us for this permission (not applicable for Express Edition).

Applying different theme

Help Server is shipped with 4 themes: Ocean, OceanVertical, BlackCurrant and BlackCurrantVertical.

Themes are located in "<InstallationFolder>\Web\App_Themes" folder. To change Help Server theme, you must set theme attribute of <helpServer> configuration element in Web.config file.

Theme screenshots

Ocean theme (vertical and horizontal):



BlackCurrant theme (vertical and horizontal):






General troubleshooting

The following problem resolution pattern is highly recommended:

Try to find a solution in Help Server Support Forum:
Search page URL:

Put full description of your problem in the "Help Server Support Requests" forum: Please read "Reporting bugs" section (it goes further) before doing this.

Reporting bugs

We usually need the following information to process your bug report:

A description of actions leading to the problem, or even better (if possible) - a list of actions we should perform to reproduce it.

If an exception occurs - its stack trace.


Bug reports can be published in Bug Reports forum (, if you're sure that this is a bug in Help Server; otherwise you may publish a report in Support Requests forum (, or send it description to We'll anyway publish bug report after studying the problem, if a bug is found.