Troubleshooting

You can check the API is responding by navigating to the following Url. You should see a page like this if the API is responding:

To troubleshoot problems logging in, you can try to log in manually, to do this:

  1. Expand the Sessions section and choosing Simple Login.

  2. Enter the login credentials in the Parameters section, you can use the FastStats username or the email address here.

Note: You can safely ignore the following error:

Copy
{"schemaValidationMessages":[{"level":"error","message":"Can't read from file [http://psinttest/OrbitAPI/swagger/ui/index.html/../../../swagger/v2/swagger.json"}](http://psinttest/OrbitAPI/swagger/v2/swagger.json%22%7d)]}

Errors relating to client access

If the API is responding with a ‘401 Unauthorised’ error with the correct login details, ensure the security settings in the API settings (appsettings.json) match the settings in your web service configuration.

The default page file must be 'index.html' within IIS. If it is not, you will get a 403 access denied message.

Errors relating to directory access

The following errors can occur when the user that is set to run the AspNetCore application pool either cannot execute the dotnet.exe or cannot access the directory, for example the directory is not in the PATH.

Error:

Application 'MACHINE/WEBROOT/APPHOST/ORBITAPI' with physical root 'D:\www\inetpub\...\OrbitAPI\' failed to start process with commandline '"dotnet" .\Apteco.Orbit.API.dll', ErrorCode = '0x80070002 : 0.

Solution:

Typically, the path is ‘C:\Program Files\dotnet\dotnet.exe’

This can be fixed by either adding this directory to the PATH environment variable for the executing user or by editing the web.config file in OrbitAPI such that:

<aspNetCore processPath="dotnet" arguments=".\Apteco.Orbit.API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />

Becomes:

<aspNetCore processPath="C:\program files\dotnet\dotnet\dotnet.exe" arguments=".\Apteco.Orbit.API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />

Errors relating to the ASP.NetCore Version:

This error can occur by installing an incorrect version of AspNetCore.

For example, just the ‘Current’ version rather than LTS.

Error:

Application '...' with physical root 'C:...\my-app-folder\' failed to start process with commandline '"dotnet" .\MyApp.dll', ErrorCode = '0x80004005 : 80008083.

Errors relating to Intranet Deployments of Orbit and Internet Explorer

When using Internet Explorer and accessing an intranet deployed Orbit installation.

Error:

The login page renders as:

Solution:

Turn off a compatibility view option:

Clear the checkbox for ‘Display intranet sites in Compatibility View’.

API Settings

The API settings are maintained in 'appsettings.json' in the /OrbitAPI virtual directory.

Note: You may need to reset IIS after making changes.

Table: Orbit API settings Information.

Section Settings
JwtIssuerOptions JSON Web Token Issuer OptionsUsed as part of the login process, possibly not required, or could be set as default and overridden in certain circumstances.
CorsOptions Cross Origin Resource Sharing OptionsThis allows the Orbit UI to talk to the Orbit API even though they are not the same website. It is also useful when IP addresses and domain names are used interchangeably.
Systems > Emails The Email service settings indicate the method by which the API sends emails, and the EmailNotificationService describes the details of emails that are sent.
Systems > SessionService The session service password details must match the FastStats web service password restrictions. Values for the “HashMethod” are:BasicCipher“SHA1”“SHA256”“SHA384”“SHA512”“MD5”
Systems > User service Orbit allows sharing to any email address in a list of domains, such as apteco.com. The domains are set in the RestrictedEmailDomains value. An example that allows sharing to both apteco.com and example.com emails are:“AllowUnrestrictedEmailDomains” : “false”“RestrictedEmailDomains”: "apteco.com example.com"

WebDav Considerations

WebDav definition (Wikipedia): (Web Distributed Authoring and Versioning) is an extension of the Hypertext Transfer Protocol (HTTP) that allows clients to perform remote Web content authoring operations.

Note: If you are using WebDav, then you may experience issues where an Audience Export fails and no message is displayed when trying to export and Audience.

Who uses WebDav

If Orbit is on a server with GoldVision, then customers may be using WebDav.

Debug

Using the development tools in your browser you can debug if this issue exists. Verbs that get blocked by WebDav can include ‘Delete’ or ‘Put, and methods that get blocked can include ‘Download’.

Error viewed in browser dev tools

Copy
{"code":10002,"id":null,"message":"ErrorGettingFileContents","parameters":[{"key":"details","value":"The remote server returned an error: (405) Method Not Allowed.\n"}]}

Note: The ‘Disable WebDAV’ checkbox should only be selected if you are sure that WebDAV is installed on the IIS instance. Disabling it when it is not installed results in errors in IIS and may result in no sites being served.

Once the setting has been changed, the FastStats Orbit Updater service must be restarted for the changes to take affect. It then adjusts the OrbitAPI ‘web.config’ the next time it is updated.

Technical Notes

New API web.config with WebDAV placeholders:

Copy
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      <!--StartWebDav--><!--EndWebDav-->
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Apteco.Orbit.API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00">
      <environmentVariables />
    </aspNetCore>
    <rewrite>
      <rules>
        <rule name="UseUnencodedUrl" stopProcessing="true">
          <match url="(.*)" />
          <action url="{UNENCODED_URL}" type="Rewrite" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>
    <security>
      <requestFiltering allowDoubleEscaping="true" />
    </security>
    <!--StartWebDavModule--><!--EndWebDavModule-->
  </system.webServer>
</configuration>
<!--ProjectGuid: 6B413185-967B-47FC-8EFC-B7127BCBAD21-->

If the Disable WebDAV is checked, then the OrbitAPI web.config is modified to something like this:

Copy
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
  -->
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        <!--StartWebDav--><remove name="WebDAV" /><!--EndWebDav-->
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Apteco.Orbit.API.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00">
      <environmentVariables />
    </aspNetCore>
    <rewrite>
      <rules>
        <rule name="UseUnencodedUrl" stopProcessing="true">
          <match url="(.*)" />
          <action url="{UNENCODED_URL}" type="Rewrite" appendQueryString="false" />
        </rule>
      </rules>
    </rewrite>
    <security>
      <requestFiltering allowDoubleEscaping="true" />
    </security>
      <!--StartWebDavModule--><modules><remove name="WebDAVModule" /></modules><!--EndWebDavModule-->
  </system.webServer>
</configuration>
<!--ProjectGuid: 6B413185-967B-47FC-8EFC-B7127BCBAD21-->