Back to Website
Show / Hide Table of Contents

AppSettings.config

  • 14 minutes to read

The ~/Configuration/AppSettings.config file allows you to configure the location of asset folders, the state file storage, and the security model.

The following snippet shows application parameters of Customer's Canvas, which you can set up in either the appSettings section of Web.config or the separate ~/Configuration/AppSettings.config, and their values. You can click a key to navigate to its description.

<appSettings>
    <!-- Paths -->
    <add key="DesignFolder" value="..\assets\designs" />
    <add key="MockupFolder" value="..\assets\mockups" />
    <add key="WatermarkFolder" value="..\assets\helpers" />
    <add key="DesignImagesFolder" value="..\assets\helpers" />
    <add key="PublicGalleryFolder" value="..\assets\images" />
    <add key="UserDataFolder" value="..\userdata" />

    <!-- Asset Storage -->
    <add key="AssetStorageEndpoint" value="" />
    <add key="AssetStorageApiKey" value="" />
    <add key="AssetStorageTenantId" value="" />
    <add key="AssetStorageRetryCount" value="3" />
    <add key="AssetProcessorEndpoint" value="" />
    <add key="AssetProcessorApiKey" value="" />
    <add key="AssetStorageStates" value="False" />
    <add key="AssetStoragePublicGallery" value="False" />
    <add key="AssetStorageFonts" value="False" />
    <add key="AssetStorageFontsPath" value="" />
    <add key="AssetStorageFontsCheckInterval" value="60" />
    <add key="AssetStorageTemplates" value="False" />
    <add key="AssetStorageImages" value="False" />
    <add key="MessageBus:RabbitMQ" value="" />
    <add key="MessageBus:AzureServiceBus" value="" />

    <!-- State file management -->
    <add key="MasterUserId" value="masteruser" />
    <add key="DefaultUserId" value="default" />
    <add key="StateFileStorageEnabled" value="False" />
    <add key="AnonymousModeEnabled" value="False" />
    <add key="DemoModeEnabled" value="False" />
    <add key="HiResControllerStoreDataInState" value="True" />

    <!-- Font management -->
    <add key="FontSubstitutionEnabled" value="False" />
    <add key="SubstitutionFontPostScriptName" value="Roboto-Regular" />
    <add key="DefaultFontPostScriptName" value="Roboto-Regular" />
    <add key="LoadFontListAsPostScriptNames" value="True" />
    <add key="Hinting" value="Auto" />

    <!-- Editor features -->
    <add key="DefaultPlaceholderCoverModeEnabled" value="False" />

    <!-- Rendering -->
    <add key="RasterizeVectorInSmartFrame" value="False" />
    <add key="ProofImageDownloadEnabled" value="False" />
    <add key="SepiaAlgorithm" value="MoreBrown" />
    <add key="AppUrl" value="/" />
    <add key="DisableHiResOutputEndpoint" value="False" />
    <add key="AutoTargetDevicePreviewMode" value="True" />

    <!-- Security -->
    <add key="ApiSecurityKey" value="" />
    <add key="UnsafeHttpWebApiEnabled" value="" />
    <add key="SecureModeEnabled" value="True" />
    <add key="CorsAllowOriginDomains" value="*" />
    <add key="CorsAllowRequestHeaders" value="" />
    <add key="CustomersCanvasLicenseKey" value="" />
    <add key="IgnoreSslVerification" value="False" />

    <!-- Troubleshooting and maintenance -->
    <add key="LogCleanUpInterval" value="60" />
    <add key="LogLifetimeToArchiving" value="20160" />
    <add key="LogLifetimeToRemoving" value="" />
    <add key="IssueNotificationEmail" value="" />
    <add key="DebugScriptModeEnabled" value="" />

    <!-- External state storage -->
    <add key="ExternalStatePushUrl" value="https://example.com/api/state/push/{userId}/{stateId}" />
    <add key="ExternalStatePullUrl" value="https://example.com/api/state/pull/{userId}/{stateId}" />
    <add key="ExternalStateDeleteUrl" value="https://example.com/api/state/delete/{userId}/{stateId}" />
    <add key="ExternalStateSecurityKey" value="UniqueSecurityKey" />
    <add key="ExternalStateHeadRequestEnabled" value="True" />

    <!-- Asset Manager -->
    <add key="AllCategoryName" value="all" />
    <add key="RootCategoryName" value="root" />
    <add key="OnlyFirstLevelSubfoldersInitialization" value="false" />

    <!-- Concurrency -->
    <add key="MaxConcurrentRenderingTasks" value="12" />
    <add key="MaxConcurrentStateIOTasks" value="4" />

    <!-- Remote Token Service -->
    <add key="TokenServiceEndpoint" value="https://localhost/token-service" />
    <add key="TokenServiceApiKey" value="" />

</appSettings>
Note

All parameters defining paths are either relative or absolute. Relative paths to folders are specified from your site root and start with ~/ (for example, ~/userdata). Absolute paths are complete ones; they start either with a drive letter (for example, C:\) or \\ for network locations. When you use absolute paths to external folders, make sure that the user account, under which Customer's Canvas runs in ASP.NET/IIS, has the read/write access to the remote folders.

If for some reasons the Postscript names are misspelled, then Customer's Canvas adds Arial to the editor's font list and uses this font for substitutions and new text elements.

Let's look at these parameters in more detail.

Paths

Name Description Possible values
DesignFolder The folder path where design templates are stored. The default value is "..\assets\designs". folder path
MockupFolder The folder path where product mockups are stored. The default value is "..\assets\mockups". folder path
WatermarkFolder The folder path where watermark images are stored. The default value is "..\assets\helpers". folder path
DesignImagesFolder The folder path where the <BGIMG> images are stored. The default value is "..\assets\helpers". folder path
PublicGalleryFolder The folder path where public images are stored. The default value is "..\assets\images". folder path
UserDataFolder The folder path where the user data is stored. The default value is "..\userdata". folder path

Asset Storage

Name Description Possible values
AssetStorageEndpoint The URL that links to your Asset Storage service. For example, "https://assetstorage.example.com". string
AssetStorageApiKey The API key you have set in your Asset Storage configuration. This value is an arbitrary string (a unique value). string
AssetStorageTenantId If you are using Customer's Canvas in single-tenant mode, always set 1. Otherwise, specify the ID of a tenant where you want to connect it. string
AssetStorageRetryCount Ensures that the data will be received from the storage even if there are temporary network issues. The default value is 3. number
AssetProcessorEndpoint The URL that links to your Asset Processor service. For example, "https://assetprocessor.example.com". string
AssetProcessorApiKey The API key you have set in your Asset Processor configuration. This value is an arbitrary string (a unique value). string
AssetStorageStates If True, saves state files to and loads them from the Asset Storage. The default value is False. True, False
AssetStoragePublicGallery If True, enables receiving public images from the Asset Storage. The default value is False. True, False
AssetStorageFonts If True, enables receiving fonts from the Asset Storage. The default value is False. True, False
AssetStorageFontsPath The folder path where fonts are stored. By default, they are stored in the "Fonts" folder. folder path
AssetStorageFontsCheckInterval The timeout to check for new fonts in storage, in seconds. You can increase this value to reduce resource consumption. The default value is 60. number
AssetStorageTemplates If True, enables receiving product templates and mockups from the Asset Storage. The default value is False. True, False
AssetStorageImages If True, enables receiving images from the Asset Storage. The default value is False. True, False
MessageBus:RabbitMQ The RabbitMQ connection string to notify of changing assets. You must specify this string in the following format: "Host=...;VirtualHost=...;Username=...;Password=...". string
MessageBus:AzureServiceBus The AzureServiceBus connection string to notify of changing assets. You must specify this string in the following format: "Endpoint=...;SharedAccessKeyName=...;SharedAccessKey=...". string

State file management

Name Description Possible values
MasterUserId The identifier of the master user. Templates and images that belong to the master user can be used by any user. The default value is masteruser. string
DefaultUserId The identifier of the default user. The default value is default. string
StateFileStorageEnabled Enables the space-saving mode of state files. This mode is helpful when working with large designs and reusing graphics. In this mode, state files are saved in the .sto format. All images are stored in the ..\\userdata\\StateFileCache\\ folder, and state files have only links to the files in that folder. The default value is False. True, False
AnonymousModeEnabled Enables the anonymous site mode. The default value is False. For more details, see the Populating designs with user info article. True, False
DemoModeEnabled Enables the demonstration mode. The default value is False. For more details, see the Populating designs with user info article. True, False
HiResControllerStoreDataInState If True, the HiRes controller will save personalization data in state files when rendering products. In this case, a state file will represent the initial product template without applying this data. If False, then the resulting state file will contain a set of personalized product copies but will not include the personalization data. The default value is True. To configure a single request, you can use StoreDataInState in the request payload. True, False

Font management

Name Description Possible values
FontSubstitutionEnabled Enables the font substitution feature. If a font required by a product is not found on the server, depending on this value, it triggers an exception (for the False value) or substitutes the font (for the True value). Since this feature is disabled by default, make sure that all fonts from all your templates are imported to Customer's Canvas as explained in Font list article. NOTE: For auto-scaled texts, this option is ignored and it always throws an exception if it meets an unknown font in a template. The default value is False. True, False
SubstitutionFontPostScriptName The PostScript name of the font to substitute a missing font with. By default, it is the DefaultFontPostScriptName value. PostScript font name
DefaultFontPostScriptName The PostScript name of the default font used for any new text. The default value is Roboto-Regular. PostScript font name
LoadFontListAsPostScriptNames Allows you to use PostScript names in the FontList config if this parameter is True. If False, the editor reads the names in this list as font family names. The default value is True. True, False
Hinting Customer's Canvas allows you to specify whether to use font hinting when it is not enabled for the font or not. The Enabled value turns hinting on whereas Disabled turns it off. The Auto value does not turn font hinting on when it is disabled. The default value is Auto. Enabled, Disabled, Auto

Editor features

Name Description Possible values
DefaultPlaceholderCoverModeEnabled Enables the cover mode. If True, the cover mode is enabled for image placeholders without using the <PACM> marker. The default value is False. True, False

Rendering

Name Description Possible values
RasterizeVectorInSmartFrame Defines how to import PDF and AI vector graphics from Photoshop templates. If True, Customer's Canvas rasterizes images from smart frames, otherwise, they are loaded in a vector form. The <RVC> marker overrides this parameter. The default value is False. True, False
ProofImageDownloadEnabled Enables downloading of proof images instead of opening them in a tab when opening a proof image link in a browser. The default value is False. True, False
SepiaAlgorithm Sets either a standard Sepia algorithm or a custom algorithm giving a more brown tone. MoreBrown is based on Standard with modified hue, contrast, and saturation. By default, the MoreBrown algorithm is enabled in the config. Without this parameter, the Standard algorithm is applied. Standard, MoreBrown
AppUrl Defines server's URLs that appear in links to proof images and high-resolution outputs. string
DisableHiResOutputEndpoint Disables the endpoint that generates high resolution print files. By default, the rendering is enabled, and this value is False. True, False
AutoTargetDevicePreviewMode Enables preview of CMYK colors on the canvas and proof images and uses the profile specified in `hiResOutputDestinationColorProfileName` for color conversion. By default, this preview mode is enabled, and this value is True. True, False

Security

Name Description Possible values
ApiSecurityKey Enables access to the Web API. You have to include this key in every header of HTTPS requests as the X-CustomersCanvasAPIKey field to perform file operations on your server. The Web API works if the value of this key passed in a request matches the value defined in web.config. The value is an arbitrary string (a unique value). For more details, refer to the Authentication topic. string
UnsafeHttpWebApiEnabled Enables access to the Web API through HTTP. The default value is False, which means you can only call the Customer's Canvas Web API through the secure protocol (HTTPS). True, False
SecureModeEnabled Enables secure access to the user's private data and the Web API endpoints by using tokens. In this mode, before loading the editor, you have to create a tokenId for a single user and pass this token to the `loadeditor` method as a configuration parameter. The default value is True. True, False
CorsAllowOriginDomains Restricts embedding the editor to pages hosted only on listed domains. If your site and Customer's Canvas run on different domains, you can specify your site domain name in CorsAllowOriginDomains to disallow access to the web-to-print editor from other domains. The value is a comma-separated string. For example, it may look as "http://domain1.com,http://domain2.net". The "*" default value allows access from any domain. string
CorsAllowRequestHeaders Restricts HTTP headers, which the Design Editor accepts, to the listed in this parameter. By default, only X-CustomersCanvasAPIKey is accepted, and you don't need to specify it here. To accept other HTTP headers, you must specify them in CorsAllowRequestHeaders as a comma-separated string. The "*" value allows you to send any HTTP header. string
CustomersCanvasLicenseKey Applies a license key to the Customer's Canvas instance. string
IgnoreSslVerification If True, the Web API does not verify certificates of HTTPS addresses of the assets. The default value is False. True, False

Logs and Debugging

Name Description Possible values
LogCleanUpInterval The interval between cleanup runs, in minutes. Every run, Customer's Canvas verifies whether logs get older than LogLifetimeToArchiving or LogLifetimeToRemoving and triggers archiving or removing log files if required. The automatic cleanup does not occur when the application starts. The default value is 60 (an hour). number
LogLifetimeToArchiving The lifetime of logs before archiving them into the ~/Resources/Logs/Archive folder, in minutes. Elmah does not index files in this folder that makes the application launches faster. The default value is 20160 (two weeks). number
LogLifetimeToRemoving The lifetime of logs before removing them from both ~/Resources/Logs/Archive and ~/Resources/Logs folders, in minutes. Note, removing logs can make an error analysis difficult. If LogLifetimeToRemoving is less than LogLifetimeToArchiving, the archive folder will not contain log files. By default, Customer's Canvas does not remove logs. number
IssueNotificationEmail Customer's Canvas sends error notifications to this email address. You can receive notifications of initialization errors and missing designs, mockups, or fonts. By default, this value is undefined, and the editor does not send email notifications. For more details, refer to the Monitoring topic. string
DebugScriptModeEnabled Enables the Debug mode for loading JavaScript code. False enables the Release mode when the scripts are minified and combined into a bundle. True enables the Debug mode when the scripts load as separate files and not minified. If you do not specify this parameter, the mode will depend on the application build configuration (for example, if compiled as Debug, Customer's Canvas enables the Debug Script mode). True, False

External state storage

Name Description Possible values
ExternalStatePushUrl Defines the endpoint of your custom controller that the Design Editor will use to push a state file to external storage. The editor sends a state file to ExternalStatePushUrl and does not save it in its local storage if it receives a success response. You can define this endpoint in your own format, but it must contain {userId} and {stateId} placeholders, for example, "https://example.com/api/state/push/{userId}/{stateId}". These placeholders will be replaced with the actual user and state identifiers. You can also specify additional parameters in your request. string
ExternalStatePullUrl Defines the endpoint of your custom controller that the Design Editor will use to pull a state file from external storage. This endpoint must implement both GET and HEAD methods and must pass the Etag and LastModified headers when responding. This ensures optimal operation and traffic savings. When loading a state file, the editor searches for this file in its local storage and cache first. Then, the editor tries to pull this file from ExternalStatePullUrl. If the state file is not found, an exception occurs. You can define this endpoint in your own format, but it must contain {userId} and {stateId} placeholders, for example, "https://example.com/api/state/pull/{userId}/{stateId}". These placeholders will be replaced with the actual user and state identifiers. You can also specify additional parameters in your request. string
ExternalStateDeleteUrl Defines the endpoint of your custom controller that the Design Editor will use to delete a state file from external storage and the cache. You can define this endpoint in your own format, but it must contain {userId} and {stateId} placeholders, for example, "https://example.com/api/state/delete/{userId}/{stateId}". These placeholders will be replaced with the actual user and state identifiers. You can also specify additional parameters in your request. string
ExternalStateSecurityKey Defines a security key for your controller processing requests to external state storage. The Design Editor passes this key within the header of HTTPS requests as the X-ExternalStateStorageApiKey field. The value is an arbitrary string. string
ExternalStateHeadRequestEnabled If you use an outdated implementation of webhooks, set this parameter to False to confirm that the Pull endpoint does not support the HEAD request. However, we strongly recommend updating the webhook to support the HEAD request to optimize performance and reduce traffic. The default value is True. True, False

The Asset Manager

Name Description Possible values
AllCategoryName The alias for the category containing images from the public images folder and all its subfolders. The default value is all. string
RootCategoryName The alias for the category containing images from the public images folder. The default value is root. string
OnlyFirstLevelSubfoldersInitialization If True, the categories in the PublicSource are read level by level on demand. At initializing, only first-level subfolders are taken. If False, the entire hierarchy of assets will be read when the image manager is opened. The default value is False. True, False

Concurrency

Name Description Possible values
MaxConcurrentRenderingTasks The maximum number of tasks for rendering proof images and hi-res outputs that the Design Editor can perform at the same time. The default value is 12. number
MaxConcurrentStateIOTasks The maximum number of concurrent tasks for loading or saving sate files in the Design Editor. For example, is this value is 3, then three load tasks and three save tasks can be performed at the same time. The default value is 4. number

Remote Token Service

Name Description Possible values
TokenServiceEndpoint The URL that links to your TokenService application. For example, "https://localhost/token-service". string
TokenServiceApiKey The API key defined in the TokenService config. This value is an arbitrary string (a unique value). string
Was this page helpful?
Thanks for your feedback!
Back to top Copyright © 2001–2024 Aurigma, Inc. All rights reserved.
Loading...
    Thank for your vote
    Your opinion is important to us. To provide details, send feedback.
    Send feedback