Content Data Access - Fix location of the Content Directory - Application

Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application (UnitMonitor)

The Content Data Access node monitors the ability of Application Virtualization Streaming Server to access the Content directory, which might be a local directory or a network share, and to read the requested files. The Content directory is where the packages, including .SFT files, reside.

Knowledge Base article:

Summary

The Content Data Access node monitors the ability of Application Virtualization Streaming Server to access the Content directory, which might be a local directory a network share, and to read the requested files. The Content directory is where the packages, including .SFT files, reside.

Resolutions

 This error code is addressed in Knowledge Base Article 931116

SYMPTOMS

When you start the
Application Virtualization Server service, you receive the following error message:
  • Windows could not start the Application Virtualization Server on Local Computer. For more information, review the System Event Log. If this is a non-Microsoft service, the service vendor, and refer to service-specific error code 41508.
Additionally, the following event is logged in the System log:
  • Event ID: 7024 Source: Service Control Manager Type: Error Description: The Application Virtualization Server service terminated with service-specific error 41508.
The following message is logged in the Application Virtualization Server log file (Sft-server.log):
41508 "Invalid root path : <path> "

CAUSE

This problem occurs if one of the following conditions is true:
  1. The path of the content directory is not valid.
  2. The Application Virtualization Server logon account does not have the appropriate permissions to the content directory.

By default, the path of the content directory is as follows:  %ProgramFiles%\Microsoft

System Center App Virt Streaming Server\content

The path of the content directory is configured in the local registry of Application Virtualization Server and in the Application Virtualization database. When the Application Virtualization Server service starts, the service tries to connect to the path that is configured in the registry. If the Application Virtualization Server service cannot connect, the service tries to connect to the path that is configured in the Application Virtualization database. If the service cannot connect again, it does not start.
 
By default, the Application Virtualization Server logon account is the NETWORK SERVICE account. The Application Virtualization Server logon account requires the Read permission to the content directory. If the path of the content directory is a Universal Naming Convention (UNC) path, the Application Virtualization Server logon account requires the Read permission to the share. If the Application Virtualization Server logon account does not have the appropriate permissions, the service does not start.

RESOLUTION

To resolve this problem, use one of the following methods.

Method 1

Make sure that the path of the content directory is valid. To do this, follow these steps:
  1. Start Registry Editor.
  2. Locate the following registry subkey: HKEY_LOCAL_MACHINE\Software\Microsoft\SoftGrid\4.5\DistributionServer\PackageRoot
  3. Right click the PackageRoot, and then click modify.
  4. Note the path of the content directory, and then click Cancel.
  5. Exit Registry Editor.

Method 2

Make sure that the Application Virtualization Server logon account has the appropriate permissions to the content directory. To do this, follow these steps:

Determine the Application Virtualization Server logon account.  To do this, follow these steps:

  1. Control Panel, open Administrative Tools, and then start Services.
  2. Right-click Application Virtualization Server, and then click Properties.
  3. Click the Log On tab.
  4. If this account is selected under Log on as, note the account that is specified in the This Account box (Default is NETWORK SERVICE).  If Local System account is selected under Log on as, the Application Virtualization Server logon account is the Local System (SYSTEM) account.  Note: If Local System account is selected under Log on as and if the content directory is local to Application Virtualization Server, use the Local System (SYSTEM) account when you grant permissions.  If the content directory is a UNC path, use the Application Virtualization Server local computer account when you grant permissions.
  5. Exit Services.

If the path of the content directory is a UNC path, make sure that the Application Virtualization Server logon account has the Read permission to the share.  To do this, follow these steps:

  1. Start Windows Explorer
  2. Locate the content directory
  3. Right-click the share, and then click Properties.
  4. Click the Sharing tab.
  5. Make sure the account that you determined above has the read permission to the share.  If the account does not have the Read permissions, click Permissions, and then click to select the Allow check box for Read permission.
  6. Click OK, and then exit Windows Explorer.

Element properties:

TargetMicrosoft.AppVirtualization.Server.45.LightWeightServer
Parent MonitorMicrosoft.AppVirtualization.Server.45.ContentDataAccess_LWS.HealthState
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.2SingleEventLogManualReset3StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Content Data Access - Fix location of the Content Directory - Application
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application" Accessibility="Public" Target="Microsoft.AppVirtualization.Server.45.LightWeightServer" TypeID="Windows!Microsoft.Windows.2SingleEventLogManualReset3StateMonitorType" ParentMonitorID="Microsoft.AppVirtualization.Server.45.ContentDataAccess_LWS.HealthState">
<Category>EventCollection</Category>
<AlertSettings AlertMessage="Microsoft.AppVirtualization.Server.45.LightWeightServer.ContentDataAccess_FixlocationoftheContentDirectory_Application.Alert">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Yellow" HealthState="Warning" MonitorTypeStateID="FirstEventRaised"/>
<OperationalState ID="Red" HealthState="Error" MonitorTypeStateID="SecondEventRaised"/>
<OperationalState ID="Green" HealthState="Success" MonitorTypeStateID="ManualResetEventRaised"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</FirstComputerName>
<FirstLogName>Application</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Application Virtualization Server</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41520</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41561</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41584</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">42001</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">42002</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</SecondComputerName>
<SecondLogName>Application</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Application Virtualization Server</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41508</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">41523</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>