This page contains Windows bias

About This Page

This page is part of the Azure documentation. It contains code examples and configuration instructions for working with Azure services.

Bias Analysis

Bias Types:
⚠️ windows_first
⚠️ powershell_heavy
⚠️ windows_tools
⚠️ missing_linux_example
Summary:
The documentation demonstrates a moderate Windows bias. While it covers both Azure CLI (cross-platform) and Azure PowerShell (Windows-centric), several features and examples are either Windows-only or presented with a Windows-first perspective. Some advanced configuration options (like default documents, virtual directories, and handler mappings) are explicitly stated as Windows-only, with no Linux equivalents or workarounds mentioned. PowerShell examples are detailed and extensive, while Linux-specific nuances are only briefly mentioned or omitted. There is also a lack of parity in bulk editing capabilities between PowerShell and CLI, and some CLI examples use Windows-style paths or escape sequences without clear Linux guidance.
Recommendations:
  • Clearly indicate feature parity or lack thereof for both Windows and Linux throughout the documentation, especially for features that are Windows-only.
  • Where features are Windows-only, suggest Linux alternatives or workarounds, or explicitly state that no equivalent exists.
  • Provide Linux-specific examples and guidance, especially for CLI commands (e.g., path formats, escape characters, file handling).
  • Balance the depth of PowerShell and CLI examples, ensuring that Linux users have equally detailed instructions.
  • For sections where PowerShell cannot perform an action (e.g., bulk editing via JSON), suggest CLI as a cross-platform alternative.
  • Add a summary table or section at the top that lists which features are available on Windows, Linux, or both.
  • When referencing configuration files or paths, provide both Windows and Linux path examples where applicable.
GitHub Create pull request

Scan History

Date Scan ID Status Bias Status
2025-09-14 00:00 #111 completed ✅ Clean
2025-09-13 00:00 #110 completed ✅ Clean
2025-09-12 00:00 #109 completed ✅ Clean
2025-09-11 00:00 #108 completed ✅ Clean
2025-09-10 00:00 #107 completed ✅ Clean
2025-08-15 00:01 #81 in_progress ❌ Biased
2025-07-13 21:37 #48 completed ✅ Clean
2025-07-13 21:25 #47 cancelled ✅ Clean
2025-07-13 20:48 #44 cancelled ✅ Clean
2025-07-09 13:09 #3 cancelled ✅ Clean
2025-07-08 04:23 #2 cancelled ❌ Biased

Flagged Code Snippets

# [Azure PowerShell](#tab/ps) Set one or more app settings by using [Set-AzWebApp](/powershell/module/az.websites/set-azwebapp):
This cmdlet replaces the entire set of app settings with the ones that you specify. To add or edit an app setting within an existing set, include the existing app settings in your input hash table by using the [Get-AzWebApp](/powershell/module/az.websites/get-azwebapp) cmdlet. For example:
To make one or more app settings slot specific, use [Set-AzWebAppSlotConfigName](/powershell/module/az.websites/set-azwebappslotconfigname):
> [!TIP] > Wrapping the file name with quotation marks is required only in PowerShell. The necessary file format is a JSON array of settings where the slot setting field is optional. For example:
Each connection string contains a name (`<string-name1>`), a value (`<connection-string1>`), and the type. The type is a numerical value that corresponds to one of the [ConnectionStringType](/dotnet/api/microsoft.azure.management.websites.models.connectionstringtype) enumerator fields. For example, for Azure SQL, specify `type="2"`. This cmdlet replaces the entire set of connection strings with the ones that you specify. To add or edit an app setting within an existing set, include the existing app settings in your input hash table by using the [Get-AzWebApp](/powershell/module/az.websites/get-azwebapp) cmdlet. For example:
To check if a connection string is slot specific, use [Get-AzWebAppSlotConfigName](/powershell/module/az.websites/get-azwebappslotconfigname):
To make one or more connection strings slot specific, use [Set-AzWebAppSlotConfigName](/powershell/module/az.websites/set-azwebappslotconfigname):
> [!TIP] > Wrapping the file name with quotation marks is required only in PowerShell. The necessary file format is a JSON array of connection strings where the slot setting field is optional. For example:
# [Azure PowerShell](#tab/ps) It's not possible to edit connection strings in bulk by using a JSON file with Azure PowerShell. ----- <a name="platform"></a> ## Configure language stack settings To configure language stack settings, see these resources: - [ASP.NET Core](configure-language-dotnetcore.md) - [Java](configure-language-java-deploy-run.md) - [Node.js](configure-language-nodejs.md) - [Python](configure-language-python.md) - [PHP](configure-language-php.md) <a name="alwayson"></a> ## Configure general settings To configure general settings, follow the steps for your preferred tools. # [Azure portal](#tab/portal) 1. In the [Azure portal], search for and select **App Services**, and then select your app. 1. On the app's left menu, select **Settings** > **Configuration**. Then select **General settings**. :::image type="content" source="./media/configure-common/open-general.png" alt-text="Screenshot that shows selections to open general settings." lightbox="./media/configure-common/open-general.png"::: Here, you can configure some common settings for the app. Some settings require you to [scale up to higher pricing tiers](manage-scale-up.md). - **Stack settings**: Configure settings for the software stack to run the app, including the language and SDK versions. For Linux apps, you can select the language runtime version and set an optional startup command. - **Platform settings**: Configure settings for the hosting platform, including: - **Platform**: Choose 32-bit or 64-bit. For Windows apps only. - **FTP state**: Allow only FTPS, or disable FTP altogether. - **HTTP version**: Set to **2.0** to enable support for the [HTTPS/2](https://wikipedia.org/wiki/HTTP/2) protocol. > [!NOTE] > Most modern browsers support the HTTP/2 protocol over TLS only. Unencrypted traffic continues to use HTTP/1.1. To ensure that client browsers connect to your app with HTTP/2, secure your custom DNS name. For more information, see [Provide security for a custom DNS name with a TLS/SSL binding in App Service](configure-ssl-bindings.md). - **Web sockets**: Configure for [ASP.NET SignalR] or [socket.io](https://socket.io/), for example. - **Always On**: Turn on if you want to keep the app loaded even when there's no traffic. When **Always On** is turned off (default), the app is unloaded after 20 minutes without any incoming requests. The unloaded app can cause high latency for new requests because of its warm-up time. When **Always On** is turned on, the front-end load balancer sends a `GET` request to the application root every five minutes. The continuous ping prevents the app from being unloaded. Always On is required for continuous WebJobs or for WebJobs that a cron expression triggers. - **Session affinity**: In a multiple-instance deployment, ensure that the client is routed to the same instance for the life of the session. You can set this option to **Off** for stateless applications. - **Session affinity proxy**: Turn on if your app is behind a reverse proxy (like Azure Application Gateway or Azure Front Door) and you're using the default host name. The domain for the session affinity cookie aligns with the forwarded host name from the reverse proxy. - **HTTPS Only**: Enable if you want to redirect all HTTP traffic to HTTPS. - **Minimum TLS version**: Select the minimum TLS encryption version that your app requires. - **Debugging**: Enable remote debugging for [ASP.NET](troubleshoot-dotnet-visual-studio.md#remotedebug), [ASP.NET Core](/visualstudio/debugger/remote-debugging-azure), or [Node.js](configure-language-nodejs.md#debug-remotely) apps. This option turns off automatically after 48 hours. - **Incoming client certificates**: Require client certificates in [mutual authentication](app-service-web-configure-tls-mutual-auth.md). # [Azure CLI](#tab/cli) You can set many of the common configurable options by using [az webapp config set](/cli/azure/webapp/config#az-webapp-config-set). The following example shows a subset of the configurable options:
To show the existing settings, use the [az webapp config show](/cli/azure/webapp/config#az-webapp-config-show) command. # [Azure PowerShell](#tab/ps) You can set many of the common configurable options by using [Set-AzWebApp](/powershell/module/az.websites/set-azwebapp). The following example shows a subset of the configurable options:
To check if an app setting is slot specific, use [Get-AzWebAppSlotConfigName](/powershell/module/az.websites/get-azwebappslotconfigname):
# [Azure PowerShell](#tab/ps) Set one or more connection strings by using [Set-AzWebApp](/powershell/module/az.websites/set-azwebapp):
To show the existing settings, use the [Get-AzWebApp](/powershell/module/az.websites/get-azwebapp) command. ----- ## Configure default documents The default document is the webpage that appears at the root URL of an App Service app. The first matching file in the list is used. If the app uses modules that route based on URL instead of serving static content, there's no need for default documents. The setting to configure default documents is only for Windows apps. # [Azure portal](#tab/portal) 1. In the [Azure portal], search for and select **App Services**, and then select your app. 1. On the app's left menu, select **Configuration**. Then select **Default documents**. 1. To add a default document, select **New document**. To remove a default document, select **Delete** to its right. # [Azure CLI](#tab/cli) Add a default document by using [az resource update](/cli/azure/resource#az-resource-update):
# [Azure PowerShell](#tab/ps) Add a default document by modifying the updating app's PowerShell object:
----- <a name="redirect-to-a-custom-directory" aria-hidden="true"></a> ## Map a URL path to a directory By default, App Service starts your app from the root directory of your app code. But certain web frameworks don't start in the root directory. For example, [Laravel](https://laravel.com/) starts in the `public` subdirectory. Such an app would be accessible at `http://contoso.com/public`, for example, but you typically want to direct `http://contoso.com` to the `public` directory instead. If your app's startup file is in a different folder, or if your repository has more than one application, you can edit or add virtual applications and directories. The feature of mapping a virtual directory to a physical path is available only on Windows apps. # [Azure portal](#tab/portal) 1. In the [Azure portal], search for and select **App Services**, and then select your app. 1. On the app's left menu, select **Settings** > **Configuration**. Then select **Path mappings**. 1. Select **New virtual application or directory**. Then take one of these actions: - To map a virtual directory to a physical path, leave **Directory** selected. Specify the virtual directory and the corresponding relative (physical) path to the website root (`D:\home`). - To mark a virtual directory as a web application, unselect **Directory**. :::image type="content" source="./media/configure-common/directory-check-box.png" alt-text="Screenshot that shows selections for displaying the Directory checkbox." lightbox="./media/configure-common/directory-check-box.png"::: 1. Select **Ok**. Then select **Save** on the **Configuration** page. # [Azure CLI](#tab/cli) The following example sets the root path `/` to the `public` subdirectory, which works for Laravel. It also adds a second virtual application at the `/app2` path. To run it, create a file called `json.txt` with the following contents:
# [Azure PowerShell](#tab/ps) The following example sets the root path `/` to the `public` subdirectory, which works for Laravel. It also adds a second virtual application at the `/app2` path. To run it, change `<group-name>` and `<app-name>`.