﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom">
  <channel>
    <title>Newest KB Articles in Programming, error messages and sample code</title>
    <description>Recent additions to the knowledge base from Winhost</description>
    <link>https://support.winhost.com/kb/c260/programming-error-messages-and-sample-code.aspx</link>
    <pubDate>Tue, 09 Jun 2026 08:22:43 GMT</pubDate>
    <generator>SmarterTrack Enterprise 100.0.9553</generator>
    <atom:link href="https://support.winhost.com/RSS.ashx?catid=260&amp;type=newestkbarticles" rel="self" type="application/rss+xml" />
    <item>
      <title>WordPress login and xmlrpc.php IIS restrictions (Cloudflare)</title>
      <link>https://support.winhost.com/kb/a1768/wordpress-login-and-xmlrpc_php-iis-restrictions-cloudflare.aspx</link>
      <pubDate>Wed, 29 Oct 2025 18:19:03 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1768</guid>
      <description>&lt;div&gt;General information about setting up an allow list for wp-login.php, /wp-admin, and xmlrpc.php can be found in the main &lt;a href="https://support.winhost.com/kb/a1671/wordpress-login-and-xmlrpc_php-iis-restrictions.aspx" target="_blank" rel="noopener noreferrer"&gt;WordPress login and xmlrpc.php IIS restrictions&lt;/a&gt; article. &amp;nbsp;With this article focused on the additional markup when using Cloudflare.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cloudflare IP Ranges Allow List&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;An updated list of Cloudflare IP ranges can be found at &lt;a data-fr-linked="true" href="https://www.cloudflare.com/en-in/ips/" id="isPasted" target="_blank" rel="noopener noreferrer"&gt;https://www.cloudflare.com/en-in/ips/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In addition to the Cloudflare IP ranges, the ipSecurity attribute &amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;enableProxyMode&lt;/span&gt;&amp;quot; needs to be set to true in order to obtain the original visitor IP, which is sent via an X-Forwarded-For header. &amp;nbsp;Both updates would be made to the top level system.webServer element, outside of the location tags used for the wp-login.php, wp-admin, and xmlrpc.php allow lists.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Example&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;security&amp;gt;
      &amp;lt;ipSecurity &lt;span style="background-color: rgb(255, 254, 224);"&gt;enableProxyMode&lt;/span&gt;=&amp;quot;true&amp;quot;&amp;gt;

          &amp;lt;!--Cloudflare allow list--&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.21.244.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.22.200.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.31.4.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;104.16.0.0&amp;quot; subnetMask=&amp;quot;255.248.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;104.24.0.0&amp;quot; subnetMask=&amp;quot;255.252.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;108.162.192.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;131.0.72.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;141.101.64.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;162.158.0.0&amp;quot; subnetMask=&amp;quot;255.254.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;172.64.0.0&amp;quot; subnetMask=&amp;quot;255.248.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;173.245.48.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;188.114.96.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;190.93.240.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;197.234.240.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
&lt;span style="white-space:pre;" id="isPasted"&gt;        &lt;/span&gt;  &amp;lt;add ipAddress=&amp;quot;198.41.128.0&amp;quot; subnetMask=&amp;quot;255.255.128.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;

      &amp;lt;/ipSecurity&amp;gt;
    &amp;lt;/security&amp;gt;
  &amp;lt;/system.webServer&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Example WordPress web.config with Permalinks&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Completed web.config with sections added to restrict access to wp-login.php, /wp-admin and xmlrpc.php when routing traffic through Cloudflare. &amp;nbsp;Requires updating the ipAddress for any site visitors that should have access to wp-login.php and /wp-admin.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;

  &amp;lt;location path=&amp;quot;wp-login.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;

  &amp;lt;location path=&amp;quot;wp-admin&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;
  
  &amp;lt;location path=&amp;quot;xmlrpc.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;!--Jetpack allow list--&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;122.248.245.244&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;54.217.201.243&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;54.232.116.4&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.80.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.96.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.112.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;195.234.108.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.64.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;

  &amp;lt;system.webServer&amp;gt;
    &amp;lt;rewrite&amp;gt;
      &amp;lt;rules&amp;gt;
        &amp;lt;rule name=&amp;quot;WordPress Rule&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
          &amp;lt;match url=&amp;quot;.*&amp;quot; /&amp;gt;
            &amp;lt;conditions&amp;gt;
              &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsFile&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
              &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsDirectory&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
            &amp;lt;/conditions&amp;gt;
          &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;index.php&amp;quot; /&amp;gt;
        &amp;lt;/rule&amp;gt;
      &amp;lt;/rules&amp;gt;
    &amp;lt;/rewrite&amp;gt;

    &amp;lt;security&amp;gt;
      &amp;lt;ipSecurity enableProxyMode=&amp;quot;true&amp;quot;&amp;gt;
          &amp;lt;!--Cloudflare allow list--&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.21.244.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.22.200.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;103.31.4.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;104.16.0.0&amp;quot; subnetMask=&amp;quot;255.248.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;104.24.0.0&amp;quot; subnetMask=&amp;quot;255.252.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;108.162.192.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;131.0.72.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;141.101.64.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;162.158.0.0&amp;quot; subnetMask=&amp;quot;255.254.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;172.64.0.0&amp;quot; subnetMask=&amp;quot;255.248.0.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;173.245.48.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;188.114.96.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;190.93.240.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;197.234.240.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;198.41.128.0&amp;quot; subnetMask=&amp;quot;255.255.128.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
      &amp;lt;/ipSecurity&amp;gt;
    &amp;lt;/security&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Problem with establishing encrypted connection to SQL server from your application</title>
      <link>https://support.winhost.com/kb/a1729/problem-with-establishing-encrypted-connection-to-sql-server-from-your-application.aspx</link>
      <pubDate>Sat, 01 Apr 2023 22:43:14 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1729</guid>
      <description>&lt;div&gt;Error encountered when connecting to SQL server with encrypted connection from your application (Classic ASP, ASP.NET, .NET Core, and PHP).&lt;/div&gt;&lt;pre class="prettyprint"&gt;The certificate chain was issued by an authority that is not trusted.&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Reason:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;This error occurs because a self-signed certificate is being used for encrypted connections on our SQL server.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;To resolve this issue:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;For Classic ASP/ASP.NET/.NET Core applications, update your connection string with the following:&lt;/div&gt;&lt;pre class="prettyprint"&gt;"Data Source=DBSERVERNAME;Initial Catalog=YOURDATABASENAME;User ID=YOURUSERID;Password=YOURPASSWORD;Encrypt=yes;&lt;strong&gt;&lt;em&gt;TrustServerCertificate=true&lt;/em&gt;&lt;/strong&gt;"&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;For PHP applications add the following:&lt;/strong&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;$connectionInfo = array( "Database"=&amp;gt;"YOURDBNAME", "UID"=&amp;gt;"YOURUSERID", "PWD"=&amp;gt;"YOURPASSWORD","Encrypt"=&amp;gt;true,"&lt;em&gt;&lt;strong&gt;TrustServerCertificate"=&amp;gt;true&lt;/strong&gt;&lt;/em&gt;);&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Response header updates for PCI Compliance</title>
      <link>https://support.winhost.com/kb/a1689/response-header-updates-for-pci-compliance.aspx</link>
      <pubDate>Tue, 21 Jun 2022 21:16:06 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1689</guid>
      <description>&lt;div&gt;&lt;strong&gt;Server and Scripting Response Headers&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To meet PCI compliance requirements, four response headers often have to be removed: server, X-Powered-By, and in the case of a .NET (MVC) app, X-AspNet-Version and X-AspNetMvc-Version. &amp;nbsp;The response headers can be viewed in a browser using dev tools like Chrome Developer Tools, the referenced headers being the last four in the screenshot below.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=159" style="width: 338px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Removing the headers is fairly straight forward. &amp;nbsp;With all but &lt;span style="color: rgb(65, 65, 65); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;X-AspNetMvc-Version&lt;/span&gt; being removed via web.config update. &amp;nbsp;In the case of &lt;span style="color: rgb(65, 65, 65); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;X-AspNetMvc-Version, it is disabled in a project&amp;#39;s global.asax(.cs) file.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;If a site is currently on IIS 8, it&amp;#39;s recommended to have the site migrated to IIS 10 / Windows Server 2019 by Support. &amp;nbsp;Where on IIS 10 the server header can be removed via the attribute removeServerHeader&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;system.webServer&amp;gt;
  &amp;lt;security&amp;gt;
    &amp;lt;requestFiltering removeServerHeader=&amp;quot;true&amp;quot; /&amp;gt;
  &amp;lt;/security&amp;gt;
&amp;lt;/system.webServer&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Otherwise on IIS 8 the header response would be removed via the following rewrite rule for RESPONSE_Server. &amp;nbsp;Unlike the attribute above, this method still returns a &amp;quot;Server&amp;quot; header, but the response is blank&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;system.webServer&amp;gt;
  &amp;lt;rewrite&amp;gt;
    &amp;lt;outboundRules&amp;gt;
      &amp;lt;rule name=&amp;quot;Remove RESPONSE_Server&amp;quot; &amp;gt;
        &amp;lt;match serverVariable=&amp;quot;RESPONSE_Server&amp;quot; pattern=&amp;quot;.+&amp;quot; /&amp;gt;
        &amp;lt;action type=&amp;quot;Rewrite&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;
      &amp;lt;/rule&amp;gt;
    &amp;lt;/outboundRules&amp;gt;
  &amp;lt;/rewrite&amp;gt;
&amp;lt;/system.webServer&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;X-Powered-By&amp;nbsp;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The X-Powered-By header is removed via the customHeaders element&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;system.webServer&amp;gt;
  &amp;lt;httpProtocol&amp;gt;
    &amp;lt;customHeaders&amp;gt;
      &amp;lt;remove name=&amp;quot;X-Powered-By&amp;quot; /&amp;gt;
    &amp;lt;/customHeaders&amp;gt;
  &amp;lt;/httpProtocol&amp;gt;
&amp;lt;/system.webServer&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;X-AspNet-Version and X-AspNetMvc-Version&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;ASP.NET version is disabled using the enableVersionHeader attribute&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;system.web&amp;gt;
  &amp;lt;httpRuntime enableVersionHeader=&amp;quot;false&amp;quot; /&amp;gt;
&amp;lt;/system.web&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To remove X-AspNetMvc-Version, &amp;quot;MvcHandler.DisableMvcResponseHeader = true&amp;quot; is added to the Application_Start event of the &lt;span style="color: rgb(65, 65, 65); font-family: sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;"&gt;global.asax or global.asax.cs&lt;/span&gt; as in the examples below&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;protected void Application_Start()
{
    MvcHandler.DisableMvcResponseHeader = true;
}&lt;/pre&gt;&lt;div&gt;or&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;    Sub Application_Start()
        MvcHandler.DisableMvcResponseHeader = True
    End Sub&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Example web.config and response&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;An example web.config removing the server, &lt;span style='color: rgb(51, 51, 51); font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;'&gt;X-Powered-By&lt;/span&gt; and &lt;span style='color: rgb(51, 51, 51); font-family: sans-serif, Arial, Verdana, "Trebuchet MS"; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;'&gt;X-AspNet-Version&lt;/span&gt; would look like&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.web&amp;gt;
    &amp;lt;httpRuntime enableVersionHeader=&amp;quot;false&amp;quot; /&amp;gt;
  &amp;lt;/system.web&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;security&amp;gt;
      &amp;lt;requestFiltering removeServerHeader=&amp;quot;true&amp;quot; /&amp;gt;
    &amp;lt;/security&amp;gt;
    &amp;lt;httpProtocol&amp;gt;
      &amp;lt;customHeaders&amp;gt;
        &amp;lt;remove name=&amp;quot;X-Powered-By&amp;quot; /&amp;gt;
      &amp;lt;/customHeaders&amp;gt;
    &amp;lt;/httpProtocol&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div&gt;Then, along with the project update for MVC, the resulting response header would be&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=160" style="width: 338px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Additional Response Headers&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Additional response headers may be required, for example Content-Security-Policy (&lt;a href="https://content-security-policy.com/"&gt;https://content-security-policy.com/&lt;/a&gt;), to set restrictions on how elements are loaded on the site. &amp;nbsp;Because various headers may be required, a basic syntax example is&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;httpProtocol&amp;gt;
  &amp;lt;customHeaders&amp;gt;
    &amp;lt;add name=&amp;quot;headerName&amp;quot; value=&amp;quot;setting or directive&amp;quot; /&amp;gt;
  &amp;lt;/customHeaders&amp;gt;
&amp;lt;/httpProtocol&amp;gt;&lt;/pre&gt;&lt;div&gt;As an example, and not explicitly a guide, nopCommerce has many of these customHeaders set by default, as seen below&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;httpProtocol&amp;gt;
  &amp;lt;customHeaders&amp;gt;
    &amp;lt;add name=&amp;quot;X-XSS-Protection&amp;quot; value=&amp;quot;1; mode=block&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;X-Frame-Options&amp;quot; value=&amp;quot;SAMEORIGIN&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;X-Content-Type-Options&amp;quot; value=&amp;quot;nosniff&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;Strict-Transport-Security&amp;quot; value=&amp;quot;max-age=31536000; includeSubDomains&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;Content-Security-Policy&amp;quot; value=&amp;quot;default-src &amp;#39;self&amp;#39;; connect-src *; font-src * data:; frame-src *; img-src * data:; media-src *; object-src *; script-src * &amp;#39;unsafe-inline&amp;#39; &amp;#39;unsafe-eval&amp;#39;; style-src * &amp;#39;unsafe-inline&amp;#39;;&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;Referrer-Policy&amp;quot; value=&amp;quot;same-origin&amp;quot; /&amp;gt;
    &amp;lt;add name=&amp;quot;Permissions-Policy&amp;quot; value=&amp;quot;accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=*, usb=()&amp;quot; /&amp;gt;
  &amp;lt;/customHeaders&amp;gt;
&amp;lt;/httpProtocol&amp;gt;&lt;/pre&gt;&lt;div&gt;Note that setting these customHeaders can have unintended consequences on what elements are being loaded on the site. &amp;nbsp;And extra care and review may be required versus the headers detailed in the first section of the article.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Example conflict&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;A simple Content Security Policy restriction can be set with default-src. &amp;nbsp;Description of the directive: &amp;nbsp;The default-src directive defines the default policy for fetching resources such as JavaScript, Images, CSS, Fonts, AJAX requests, Frames, HTML5 Media.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;And basic web.config&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;httpProtocol&amp;gt;
        &amp;lt;customHeaders&amp;gt;
          &amp;lt;add name=&amp;quot;Content-Security-Policy&amp;quot; value=&amp;quot;default-src &amp;#39;self&amp;#39;;&amp;quot; /&amp;gt;
        &amp;lt;/customHeaders&amp;gt;
    &amp;lt;/httpProtocol&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div&gt;Which would have the intended effect of preventing images from being loaded from external sources with the message&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;Refused to load the image &amp;#39;https://externalDomain/image.png&amp;#39; because it violates the following Content Security Policy directive: &amp;quot;default-src &amp;#39;self&amp;#39;&amp;quot;. Note that &amp;#39;img-src&amp;#39; was not explicitly set, so &amp;#39;default-src&amp;#39; is used as a fallback.&lt;/pre&gt;&lt;div&gt;However, some Javascript based functions may stop loading on the site with the message&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;Refused to execute inline event handler because it violates the following Content Security Policy directive: &amp;quot;default-src &amp;#39;self&amp;#39;&amp;quot;. Either the &amp;#39;unsafe-inline&amp;#39; keyword, a hash (&amp;#39;sha256-...&amp;#39;), or a nonce (&amp;#39;nonce-...&amp;#39;) is required to enable inline execution.&lt;/pre&gt;&lt;div&gt;Description of unsafe-line being: &amp;nbsp;Allows use of inline source elements such as style attribute, onclick, or script tag bodies (depends on the context of the source it is applied to) and javascript: URIs&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Requiring an update to the Content-Security-Policy above to now read&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;add name=&amp;quot;Content-Security-Policy&amp;quot; value=&amp;quot;default-src &amp;#39;self&amp;#39;; script-src &amp;#39;unsafe-inline&amp;#39; *.domain.com domain.com;&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;div&gt;Adding the unsafe-inline keyword and defining from which domains the Javascript can be loaded.&lt;/div&gt;</description>
    </item>
    <item>
      <title>WordPress login and xmlrpc.php IIS restrictions</title>
      <link>https://support.winhost.com/kb/a1671/wordpress-login-and-xmlrpc_php-iis-restrictions.aspx</link>
      <pubDate>Fri, 21 Aug 2020 21:26:45 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1671</guid>
      <description>&lt;div&gt;wp-login.php, /wpadmin and xmlrpc.php are often be targetted by bots in an attempt to compromise WordPress sites. &amp;nbsp;But access can be restricted to the admin section of the site and to xmlrpc.php through the use of the ipSecurity element of a web.config. &amp;nbsp;An overview of the sections and implementation can be found below.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In cases where traffic is being routed through Cloudflare, additional markup is required which can be found in the &lt;a href="https://support.winhost.com/kb/a1768/wordpress-login-and-xmlrpc_php-iis-restrictions-cloudflare.aspx" target="_blank" rel="noopener noreferrer"&gt;WordPress login and xmlrpc.php IIS restrictions (Cloudflare)&lt;/a&gt; article.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;wp-login.php and /wpadmin&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;First obtain the IPv4 address of any user that requires access to the admin section of WordPress. &amp;nbsp;When not known, &lt;a data-fr-linked="true" href="https://whatismyipaddress.com/" id="isPasted"&gt;https://whatismyipaddress.com/&lt;/a&gt; can be used. &amp;nbsp;Then from the example below, add the two new sections to the configuration element of the site&amp;#39;s web.config.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The two &amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; below would be replaced with the IP address of any WordPress users. &amp;nbsp;If there is more than one user, simply copy and paste as many &amp;quot;add ipAddress&amp;quot; lines as needed below the one in the example.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;

  &amp;lt;location path=&amp;quot;wp-login.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;

  &amp;lt;location path=&amp;quot;wp-admin&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;xmlrpc.php&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;xmlrpc.php is a WordPress API that is being phased out, but most notably is still used for WordPress&amp;#39; own JetPack plugin. &amp;nbsp;The same general syntax can be used to deny access to xmlrpc.php. &amp;nbsp;However, if using JetPack, then it&amp;#39;s necessary to allow WordPress IP ranges found at &lt;a data-fr-linked="true" href="https://jetpack.com/support/how-to-add-jetpack-ips-allowlist/" id="isPasted"&gt;https://jetpack.com/support/how-to-add-jetpack-ips-allowlist/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;When not using a plugin like JetPack that requires whitelisting, add a new web.config section like the example below&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;  &amp;lt;location path=&amp;quot;xmlrpc.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Because the JetPack allow list includes IP ranges, a &amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;subnetMask&lt;/span&gt;&amp;quot; needs to included along with the ipAddress. &amp;nbsp;To obtain the subnet mask from a CIDR like those provided by JetPack, a converter like &lt;a href="https://www.ipaddressguide.com/cidr"&gt;https://www.ipaddressguide.com/cidr&lt;/a&gt; may be used.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Using 122.248.245.244/32 as an example, the syntax for adding the IP address and subnet mask is&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;add ipAddress=&amp;quot;122.248.245.244&amp;quot; &lt;span style="background-color: rgb(255, 254, 224);"&gt;subnetMask&lt;/span&gt;=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Example of the full section with Jetpack allow list&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;  &amp;lt;location path=&amp;quot;xmlrpc.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;!--Jetpack allow list--&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;122.248.245.244&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;54.217.201.243&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;54.232.116.4&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.80.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.96.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.112.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;195.234.108.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.64.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Example WordPress web.config with Permalinks&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Completed web.config with sections added to restrict access to wp-login.php, /wp-admin and xmlrpc.php. &amp;nbsp;Requires updating the ipAddress for any site visitors that should have access to wp-login.php and /wp-admin.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;

  &amp;lt;location path=&amp;quot;wp-login.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;

  &amp;lt;location path=&amp;quot;wp-admin&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;&lt;span style="background-color: rgb(255, 254, 224);"&gt;xx.xx.xx.xx&lt;/span&gt;&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;
  
  &amp;lt;location path=&amp;quot;xmlrpc.php&amp;quot;&amp;gt;
    &amp;lt;system.webServer&amp;gt;
      &amp;lt;security&amp;gt;
        &amp;lt;ipSecurity allowUnlisted=&amp;quot;false&amp;quot;&amp;gt;
          &amp;lt;!--Jetpack allow list--&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;122.248.245.244&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;&lt;br id="isPasted"&gt;          &amp;lt;add ipAddress=&amp;quot;54.217.201.243&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;54.232.116.4&amp;quot; subnetMask=&amp;quot;255.255.255.255&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.80.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.96.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.112.0&amp;quot; subnetMask=&amp;quot;255.255.240.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;195.234.108.0&amp;quot; subnetMask=&amp;quot;255.255.252.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
          &amp;lt;add ipAddress=&amp;quot;192.0.64.0&amp;quot; subnetMask=&amp;quot;255.255.192.0&amp;quot; allowed=&amp;quot;true&amp;quot; /&amp;gt;
        &amp;lt;/ipSecurity&amp;gt;
      &amp;lt;/security&amp;gt;
    &amp;lt;/system.webServer&amp;gt;
  &amp;lt;/location&amp;gt;

  &amp;lt;system.webServer&amp;gt;
    &amp;lt;rewrite&amp;gt;
      &amp;lt;rules&amp;gt;
        &amp;lt;rule name=&amp;quot;WordPress Rule&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
          &amp;lt;match url=&amp;quot;.*&amp;quot; /&amp;gt;
            &amp;lt;conditions&amp;gt;
              &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsFile&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
              &amp;lt;add input=&amp;quot;{REQUEST_FILENAME}&amp;quot; matchType=&amp;quot;IsDirectory&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
            &amp;lt;/conditions&amp;gt;
          &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;index.php&amp;quot; /&amp;gt;
        &amp;lt;/rule&amp;gt;
      &amp;lt;/rules&amp;gt;
    &amp;lt;/rewrite&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to truncate your DNN event log table</title>
      <link>https://support.winhost.com/kb/a1617/how-to-truncate-your-dnn-event-log-table.aspx</link>
      <pubDate>Fri, 15 Feb 2019 23:13:52 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1617</guid>
      <description>&lt;div&gt;&lt;strong&gt;**Highly recommended you back up database before making any changes**&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;DotNetNuke has a tendency to fill up your database with eventlogs. The following SQL query will clear those logs and usually clear up a lot of space.&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;First you'll need to connect to your database through SMSS:&amp;nbsp;&lt;a href="https://support.winhost.com/kb/a1033/how-to-connect-to-a-sql-server-using-sql-server-management-studio.aspx"&gt;https://support.winhost.com/kb/a1033/how-to-connect-to-a-sql-server-using-sql-server-management-studio.aspx&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;Once you connected you'll want to click the plus sign to expand the database then click the plus sign next to &amp;quot;Databases&amp;quot;. Then right click on the database and click &amp;quot;New Query&amp;quot;.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;img alt="" height="551" src="/AvatarHandler.ashx?fid=2777420&amp;amp;key=2730404236" width="1003" /&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;Then copy and paste the following query:&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;
IF EXISTS (SELECT * FROM sys.sysobjects WHERE id = object_id(N'dbo.[sys_currentDNNVersion]') AND Type = N'FN')
	DROP FUNCTION dbo.[sys_currentDNNVersion]
GO
-- --------- create tooling: --------- 

CREATE FUNCTION dbo.[sys_currentDNNVersion]()
	RETURNS Int
AS	
BEGIN
	DECLARE @Vers Int;
	SELECT Top(1) @Vers = Major * 10000 + Minor * 100 + Build FROM dbo.[Version] ORDER BY CreatedDate DESC;
	RETURN @Vers;
END
GO

IF dbo.[sys_currentDNNVersion]() &amp;gt;= 70400 BEGIN
	-- Drop Foreign Key Constraints:
	DECLARE @fkName nVarChar(100) = Null;
	SELECT @fkName = name FROM sys.foreign_keys 
	 WHERE parent_object_id = OBJECT_ID(N'dbo.[ExceptionEvents]')
	   AND Object_id IN (SELECT constraint_object_id  
	                      FROM  sys.foreign_key_columns F 
						  JOIN  sys.columns C ON F.parent_object_id = C.object_id AND F.parent_column_id = C.column_ID 
						  WHERE C.Name = N'LogEventID');
	IF Not @fkName Is Null
		Exec(N'ALTER TABLE dbo.[ExceptionEvents] DROP CONSTRAINT [' + @fkName +'];');

	SET @fkName = Null;
	SELECT @fkName = name FROM sys.foreign_keys 
	 WHERE parent_object_id = OBJECT_ID(N'dbo.[EventLog]')
	   AND Object_id IN (SELECT constraint_object_id  
	                      FROM  sys.foreign_key_columns F 
						  JOIN  sys.columns C ON F.parent_object_id = C.object_id AND F.parent_column_id = C.column_ID 
						  WHERE C.Name = N'ExceptionHash');
	IF Not @fkName Is Null
		Exec(N'ALTER TABLE dbo.[EventLog] DROP CONSTRAINT [' + @fkName +']')
END
GO

-- Truncate tables:
IF dbo.[sys_currentDNNVersion]() &amp;gt;= 70400 BEGIN
	TRUNCATE TABLE dbo.[Exceptions]
	TRUNCATE TABLE dbo.[ExceptionEvents]
	TRUNCATE TABLE dbo.[EventLog]
END ELSE
	TRUNCATE TABLE dbo.[EventLog]
GO

IF dbo.[sys_currentDNNVersion]() &amp;gt;= 70400 BEGIN
	-- Recreate Foreign Key Constraints (using common naming):
	ALTER TABLE dbo.[ExceptionEvents] 
	  WITH CHECK ADD CONSTRAINT [FK_ExceptionEvents_EventLog] 
		FOREIGN KEY([LogEventID])
		REFERENCES dbo.[EventLog] ([LogEventID])
	  ON DELETE NO ACTION;
	  
	ALTER TABLE dbo.[EventLog] 
	  WITH CHECK ADD CONSTRAINT [FK_EventLog_Exceptions] 
		FOREIGN KEY([ExceptionHash])
		REFERENCES dbo.[Exceptions] ([ExceptionHash])
	  ON DELETE CASCADE;
END
GO

DROP FUNCTION dbo.[sys_currentDNNVersion]
GO&lt;/pre&gt;

&lt;div&gt;Once you have inserted the script, click &amp;quot;Execute&amp;quot; or hit F5 on your keyboard. It will run and you should&amp;nbsp;receive a message that it was successful.&lt;/div&gt;

&lt;div&gt;&lt;img alt="" height="360" src="/AvatarHandler.ashx?fid=2777423&amp;amp;key=3588491816" width="1102" /&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;*Note if you have a different prefix than the standard dbo. you will need to find and replace dbo. in the script with the prefix for your tables.&lt;/div&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>How to redirect non www to www</title>
      <link>https://support.winhost.com/kb/a1613/how-to-redirect-non-www-to-www.aspx</link>
      <pubDate>Thu, 07 Feb 2019 22:19:43 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1613</guid>
      <description>&lt;div&gt;Below is the code you need to enter in to your web.config file in order to redirect a domain to a sub-domain or vice versa.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;WWW to non WWW:&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;
&amp;lt;rewrite&amp;gt;
  &amp;lt;rules&amp;gt;
    &amp;lt;rule name=&amp;quot;Remove WWW prefix&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
      &amp;lt;match url=&amp;quot;(.*)&amp;quot; ignoreCase=&amp;quot;true&amp;quot; /&amp;gt;
      &amp;lt;conditions&amp;gt;
        &amp;lt;add input=&amp;quot;{HTTP_HOST}&amp;quot; pattern=&amp;quot;^www\.yourdomain\.com$&amp;quot; /&amp;gt;
      &amp;lt;/conditions&amp;gt;
      &amp;lt;action type=&amp;quot;Redirect&amp;quot; url=&amp;quot;http://yourdomain.com/{R:1}&amp;quot; redirectType=&amp;quot;Permanent&amp;quot; /&amp;gt;
    &amp;lt;/rule&amp;gt;
  &amp;lt;/rules&amp;gt;
&amp;lt;/rewrite&amp;gt;
&lt;/pre&gt;

&lt;div&gt;*You will also need to change &amp;quot;yourdomain&amp;quot; to your actual domain on Lines 6 and 8.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Non WWW to WWW:&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;
&amp;lt;rewrite&amp;gt;
  &amp;lt;rules&amp;gt;
    &amp;lt;rule name=&amp;quot;Add WWW prefix&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
      &amp;lt;match url=&amp;quot;(.*)&amp;quot; ignoreCase=&amp;quot;true&amp;quot; /&amp;gt;
      &amp;lt;conditions&amp;gt;
        &amp;lt;add input=&amp;quot;{HTTP_HOST}&amp;quot; pattern=&amp;quot;^yourdomain\.com$&amp;quot; /&amp;gt;
      &amp;lt;/conditions&amp;gt;
      &amp;lt;action type=&amp;quot;Redirect&amp;quot; url=&amp;quot;http://www.yourdomain.com/{R:0}&amp;quot; redirectType=&amp;quot;Permanent&amp;quot; /&amp;gt;
    &amp;lt;/rule&amp;gt;
  &amp;lt;/rules&amp;gt;
&amp;lt;/rewrite&amp;gt;&lt;/pre&gt;

&lt;div&gt;*You will need to change &amp;quot;yourdomain&amp;quot; to your actual domain on Line 6 and 8.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>Subdirectory and subdomain pointers with URL rewrite</title>
      <link>https://support.winhost.com/kb/a1536/subdirectory-and-subdomain-pointers-with-url-rewrite.aspx</link>
      <pubDate>Wed, 01 Aug 2018 16:33:08 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1536</guid>
      <description>&lt;div&gt;To host multiple sites within one site hosting account, and barring conflicting rewrite rules,&amp;nbsp;routing or a site built on the ASP.NET Core Framework, URL rewrite may be used to redirect domains and subdomains to subdirectories on an existing site.&amp;nbsp; Syntax examples can be found below for each type of redirection.&amp;nbsp; The rule(s) would be added to the web.config file in the document root of the site.&amp;nbsp; For Core, see the last section.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Adding a Domain Pointer&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;Winhost Control Panel &amp;gt; Sites &amp;gt; the domain name &amp;gt; Domain Pointer&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Redirecting a domain to a subdirectory&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
 &amp;lt;system.webServer&amp;gt;
  &amp;lt;rewrite&amp;gt;
   &amp;lt;rules&amp;gt;
    &amp;lt;rule name=&amp;quot;domain.com&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
     &amp;lt;match url=&amp;quot;.*&amp;quot; /&amp;gt;
     &amp;lt;conditions&amp;gt;
      &amp;lt;add input=&amp;quot;{HTTP_HOST}&amp;quot; pattern=&amp;quot;^(www.)?domain.com&amp;quot; /&amp;gt;
      &amp;lt;add input=&amp;quot;{PATH_INFO}&amp;quot; pattern=&amp;quot;^/subdirectory/&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
     &amp;lt;/conditions&amp;gt;
     &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;\subdirectory\{R:0}&amp;quot; /&amp;gt;
    &amp;lt;/rule&amp;gt;
   &amp;lt;/rules&amp;gt;
  &amp;lt;/rewrite&amp;gt;
 &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;In the above syntax example, &amp;quot;domain.com&amp;quot; on lines 6 and 9 should be replaced by the domain pointer&amp;nbsp;and &amp;quot;subdirectory&amp;quot; on lines 10 and 12 should be replaced by the subdirectory where the files have been uploaded.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Adding a Subdomain&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;Winhost Control Panel &amp;gt; Sites &amp;gt; the domain name &amp;gt; Subdomain Manager&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;Redirecting a subdomain to a subdirectory&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;
&lt;pre class="prettyprint"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
 &amp;lt;system.webServer&amp;gt;
  &amp;lt;rewrite&amp;gt;
   &amp;lt;rules&amp;gt;
    &amp;lt;rule name=&amp;quot;subdomain.domain.com&amp;quot; stopProcessing=&amp;quot;true&amp;quot;&amp;gt;
     &amp;lt;match url=&amp;quot;.*&amp;quot; /&amp;gt;
     &amp;lt;conditions&amp;gt;
      &amp;lt;add input=&amp;quot;{HTTP_HOST}&amp;quot; pattern=&amp;quot;^subdomain.domain.com$&amp;quot; /&amp;gt;
      &amp;lt;add input=&amp;quot;{PATH_INFO}&amp;quot; pattern=&amp;quot;^/subdirectory/&amp;quot; negate=&amp;quot;true&amp;quot; /&amp;gt;
     &amp;lt;/conditions&amp;gt;
     &amp;lt;action type=&amp;quot;Rewrite&amp;quot; url=&amp;quot;\subdirectory\{R:0}&amp;quot; /&amp;gt;
    &amp;lt;/rule&amp;gt;
   &amp;lt;/rules&amp;gt;
  &amp;lt;/rewrite&amp;gt;
 &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;In the above syntax example, &amp;quot;subdomain.domain.com&amp;quot; on lines 6 and 9 should be replaced by the applicable subdomain and &amp;quot;subdirectory&amp;quot; on lines 10 and 12 should be replaced by the subdirectory where the files have been uploaded.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;If after adding either rule the subdirectory is being appended to the URL, you'll want to verify line 10 in the above syntax has been added to remove it.&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;ASP.NET Inheritance&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;Note that if the subdirectory is set as an application starting point and there is an ASP.NET application in the parent directory, the child application will inherit settings from the parent application.&amp;nbsp; For more information about disabling inheritance, see:&amp;nbsp;&amp;nbsp;&lt;a href="https://stackoverflow.com/a/5968658"&gt;https://stackoverflow.com/a/5968658&lt;/a&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;strong&gt;ASP.NET Core&lt;/strong&gt;&lt;/div&gt;

&lt;div&gt;&amp;nbsp;&lt;/div&gt;

&lt;div&gt;&lt;a href="https://www.nuget.org/packages/Microsoft.AspNetCore.Rewrite/"&gt;Microsoft.AspNetCore.Rewrite&lt;/a&gt;&amp;nbsp;is middleware with support for URL rewrite rules.&amp;nbsp; For an overview on using the middleware, see the microsoft.com article&amp;nbsp;&lt;a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&amp;amp;tabs=aspnetcore2x"&gt;URL Rewriting Middleware in ASP.NET Core&lt;/a&gt;.&amp;nbsp; To use URL rewrite rules like those above through a referenced xml file, see the &lt;a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/url-rewriting?view=aspnetcore-2.1&amp;amp;tabs=aspnetcore2x#iis-url-rewrite-module-rules"&gt;IIS URL Rewrite Module rules&lt;/a&gt; section.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
    </item>
    <item>
      <title>node.js</title>
      <link>https://support.winhost.com/kb/a1534/node_js.aspx</link>
      <pubDate>Sat, 28 Jul 2018 15:32:35 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1534</guid>
      <description>&lt;div&gt;On IIS, node.js is handled by the iisnode module. &amp;nbsp;To run a node.js script, a handler mapping will first have to be added to the site&amp;#39;s web.config to process the .js script, or all .js scripts, using the iisnode module. &amp;nbsp;To run a custom node.js version, see the &lt;strong&gt;Custom node.js Version&lt;/strong&gt; section.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Handler Mapping&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;To have all .js scripts handled by the iisnode module, add module &amp;quot;iisnode&amp;quot;&amp;nbsp;to the handlers element of the web.config as in the syntax example below:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;handlers&amp;gt;
      &amp;lt;add name=&amp;quot;iisnode&amp;quot; path=&amp;quot;*.js&amp;quot; verb=&amp;quot;*&amp;quot; modules=&amp;quot;iisnode&amp;quot; /&amp;gt;
    &amp;lt;/handlers&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;If there are other files using the .js extension in the application, necessitating targeting specific files, update the handler path. &amp;nbsp;For example, if the below ztest.js file were in the document root, the syntax would be:&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;configuration&amp;gt;
  &amp;lt;system.webServer&amp;gt;
    &amp;lt;handlers&amp;gt;
      &amp;lt;add name=&amp;quot;ztest&amp;quot; path=&amp;quot;ztest.js&amp;quot; verb=&amp;quot;*&amp;quot; modules=&amp;quot;iisnode&amp;quot; /&amp;gt;
    &amp;lt;/handlers&amp;gt;
  &amp;lt;/system.webServer&amp;gt;
&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Note when adding a handler for more than one file, each will require a unique name.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Testing node.js&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;To test node.js, the syntax below may be copied, making sure to use the file extension .js. &amp;nbsp;Or &lt;a href="/AvatarHandler.ashx?fid=2569331&amp;key=2711033149"&gt;download and extract ztest.js&lt;/a&gt;;&amp;nbsp;then upload the file to the site and visit the page in a browser.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;pre class="prettyprint"&gt;  var http = require(&amp;#39;http&amp;#39;);

http.createServer(function (req, res) {
  res.writeHead(200, {&amp;#39;Content-Type&amp;#39;: &amp;#39;text/plain&amp;#39;});
  res.end(&amp;#39;Hello world&amp;#39;);
}).listen(process.env.PORT);&lt;span style="white-space: normal;"&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="isPasted"&gt;&lt;strong&gt;Custom node.js Version&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Visit &lt;a data-fr-linked="true" href="https://nodejs.org/en/download/releases/"&gt;https://nodejs.org/en/download/releases/&lt;/a&gt; and click the version number link under &amp;quot;Node.js&amp;quot; for the package download.&lt;/div&gt;&lt;div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&amp;nbsp;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=461" style="width: 750px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;br&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="isPasted"&gt;Then under &amp;quot;Binary Downloads&amp;quot; select the win x64 zip.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=466" style="width: 750px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;After downloading the zip, extract node.exe.&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=463" style="width: 670px; height: 400px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Then upload the extracted node.exe to an /App_Data directory on the site.&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;br&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=465" style="width: 502px; height: 110px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;br&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;br&gt;&lt;/div&gt;&lt;div id="isPasted"&gt;&lt;strong&gt;iisnode.yml&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Create a new text file and name it &amp;quot;iisnode.yml&amp;quot;. &amp;nbsp;In that file add the following line:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;nodeProcessCommandLine: &amp;quot;server path to file&amp;quot;&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;For the example above where node.exe was placed into /App_Data the syntax would be:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;nodeProcessCommandLine: &amp;quot;E:\web\FTPusername\app_data\node.exe&amp;quot;&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To test the update, create a separate .js file and add the following syntax to display the version of node.js the site is using:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;var http = require(&amp;#39;http&amp;#39;);
http.createServer(function(req,res) {
  res.writeHead(200, {&amp;#39;Content-Type&amp;#39;: &amp;#39;text/html&amp;#39;});
  res.end(&amp;#39;Node.js &amp;#39; + process.version);
}).listen(process.env.PORT);&lt;/pre&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To test the update, create a separate .js file and add the following syntax to display the version of node.js the site is using:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Or download node.zip for a sample iisnode.yml and test script. &amp;nbsp;Edit iisnode.yml and replace &amp;quot;FTPusername&amp;quot; with the FTP username for the site, then upload iisnode.yml (and the test script) to the document root.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="/AvatarHandler.ashx?kbattchid=467" style="width: 430px;" class="fr-fil fr-dib"&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;And view the ztest.js in a browser to show the version.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div style='box-sizing: border-box; font-family: "Segoe UI", "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; font-size: 14px;'&gt;&lt;img alt="" height="450" src="https://support.winhost.com/AvatarHandler.ashx?fid=3221122&amp;key=4043165981" style="box-sizing: border-box; border: 0px; max-width: 100%; height: auto !important;" width="770" class="fr-fic fr-dii"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Checking / Updating Outbound TLS 1.2 Support</title>
      <link>https://support.winhost.com/kb/a1519/checking-updating-outbound-tls-1_2-support.aspx</link>
      <pubDate>Tue, 26 Jun 2018 19:21:57 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1519</guid>
      <description>&lt;div&gt;Due to changes in security, it may be necessary to update or migrate a site to use TLS 1.2 for outbound connections. &amp;nbsp;Most notably for a payment gateway. &amp;nbsp;For general information, including testing, find the applicable scripting section below (ASP.NET, Classic ASP, or PHP). &amp;nbsp;If it's necessary to migrate the site to a newer version of Windows or you require assistance with reviewing TLS 1.2 support, please &lt;a href="https://support.winhost.com/Main/frmTickets.aspx"&gt;open a ticket with the Support Department&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Windows Server Version&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;The version of Windows Server, necessary to check for ASP.NET and Classic ASP support, can be ascertained by reviewing the &lt;strong&gt;Server Name&lt;/strong&gt; in the Winhost Control Panel, then matching it against the key below. &amp;nbsp;The &lt;strong&gt;Web Server&amp;nbsp;&lt;/strong&gt;field in the Winhost Control Panel will show whether the site is on Windows Server 2008, 2012, or 2016, but the key below will specify&amp;nbsp;whether it's on 2008 R2 or&amp;nbsp;2012 R2.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Winhost Control Panel &amp;gt; Sites &amp;gt; the domain name &amp;gt; Site info pane&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img alt="" height="448" src="/AvatarHandler.ashx?fid=2544828&amp;amp;key=4075007392" width="452" class="fr-fic fr-dii"&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Server key&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;table width="339" style="border-collapse:collapse;width:254pt;" id="isPasted"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td height="20" class="xl16" style="color: black; font-size: 15px; font-weight: 400; font-style: normal; text-decoration: none; font-family: Calibri, sans-serif; vertical-align: bottom; border-image: initial; border-width: 0.5pt medium medium 0.5pt; border-style: solid none none solid; border-color: black currentcolor currentcolor black; width: 131px; height: 15pt;"&gt;Windows Version&lt;/td&gt;&lt;td class="xl17" style="color: black; font-size: 15px; font-weight: 400; font-style: normal; text-decoration: none; font-family: Calibri, sans-serif; vertical-align: bottom; border-image: initial; border-width: 0.5pt 0.5pt medium medium; border-style: solid solid none none; border-color: black black currentcolor currentcolor; width: 208px;"&gt;Server Name&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl18" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;background:#D9D9D9;height:15.0pt;"&gt;Windows 2008&lt;/td&gt;&lt;td class="xl19" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;background:#D9D9D9;"&gt;w01 - w04&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl20" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;height:15.0pt;"&gt;Windows 2008 R2&lt;/td&gt;&lt;td class="xl21" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;"&gt;w05 - w08&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl18" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;background:#D9D9D9;height:15.0pt;"&gt;Windows 2012&lt;/td&gt;&lt;td class="xl19" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;background:#D9D9D9;"&gt;w11 - w15&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl20" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;height:15.0pt;"&gt;Windows 2012 R2&lt;/td&gt;&lt;td class="xl21" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;"&gt;w00, w16 - w25&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl18" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;background:#D9D9D9;height:15.0pt;"&gt;Windows 2016&lt;/td&gt;&lt;td class="xl19" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;background:#D9D9D9;"&gt;w26 - w34, w101 - w102&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl20" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:none;border-left:.5pt solid black;height:15.0pt;"&gt;Windows 2019&lt;/td&gt;&lt;td class="xl21" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:none;border-left:none;"&gt;w35 - w36, w100, w103, w01h&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height="20" class="xl22" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:none;border-bottom:.5pt solid black;border-left:.5pt solid black;background:#D9D9D9;height:15.0pt;"&gt;Windows 2022&lt;/td&gt;&lt;td class="xl23" style="color:black;font-size:15px;font-weight:400;font-style:normal;text-decoration:none;font-family:Calibri, sans-serif;text-align:general;vertical-align:bottom;border:none;border-top:none;border-right:.5pt solid black;border-bottom:.5pt solid black;border-left:none;background:#D9D9D9;"&gt;w37 - w42, w104&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;ASP.NET&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;The requirements for TLS 1.2 support when using ASP.NET are Windows Server 2012 R2 or 2016, ASP.NET Framework 4.5 or higher and bootstrapping code to set the TLS version.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;If a site is hosted on an older version of Windows, for migration assistance to Windows 2012 R2 or Windows 2016, please open a ticket with Support.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;If a site is using an ASP.NET Framework older than 4.5 it will need to be updated. &amp;nbsp;Note this is a project update rather than the ASP.NET Framework version set in the Winhost Control Panel.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;To set the TLS version for an outbound connection, add the following to the script making the connection or the global.asax:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;pre class="prettyprint"&gt;System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12&lt;/pre&gt;&lt;div&gt;More information regarding the last update can be found after the link &lt;a data-fr-linked="true" href="https://stackoverflow.com/q/28286086"&gt;https://stackoverflow.com/q/28286086&lt;/a&gt;. &amp;nbsp;Also note that the bootstrapping code would have to be updated if TLS requirements were to change in the future.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Classic ASP&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;TLS 1.2 support through Classic ASP the site should be on a Windows 2012 R2 or Windows 2016 server.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;To test TLS 1.2, the script in zssl.zip may be used: &amp;nbsp;&lt;a href="/AvatarHandler.ashx?fid=2547519&amp;key=557637804"&gt;zssl.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;For migration assistance to Windows 2012 R2 or Windows 2016, please open a ticket with Support.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;PHP / cURL&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;For PHP, TLS 1.2 support is dependent on the version of PHP set for the site. &amp;nbsp;Which should be set to 5.5 or newer in the Winhost Control Panel.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Winhost Control Panel &amp;gt; Sites &amp;gt; the domain name &amp;gt; PHP&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;img alt="" height="196" src="/AvatarHandler.ashx?fid=2544918&amp;amp;key=3796491180" width="438" class="fr-fic fr-dii"&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;To test TLS 1.2, the script in zcurl.zip may be used: &amp;nbsp;&lt;a href="/AvatarHandler.ashx?fid=2544908&amp;key=1769069719"&gt;zcurl.zip&lt;/a&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Installed .NET Core Frameworks</title>
      <link>https://support.winhost.com/kb/a1498/installed-_net-core-frameworks.aspx</link>
      <pubDate>Fri, 12 Jan 2018 18:05:34 GMT</pubDate>
      <guid isPermaLink="false">kbarticle1498</guid>
      <description>&lt;div&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;.NET Core versions supporting framework-dependent (FDD) deployment are listed below. &amp;nbsp;Versions are installed on IIS 8 and IIS 10 web servers.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;Core versions not listed below can be deployed self-contained until the framework is installed.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;If you aren&amp;#39;t on an IIS 8 server that supports FDD .NET Core we can migrate your site to a newer server that does support it. Just &lt;a href="https://support.winhost.com/Main/frmTickets.aspx"&gt;open up a support ticket&lt;/a&gt; and let us know.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;strong&gt;.NET Core versions currently supported:&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;1.0.x (End of life)&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;1.1.x &lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;(End of life)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;2.1.x (End of life)&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;2.2.x &lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;(End of life)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;3.0.x (End of Life)&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;3.1.x (Maintenance)&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;5.x (End of life)&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;6.x&lt;br&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;7.x&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;8.x&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;9.x&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:16px;"&gt;&lt;span style="font-family:arial,helvetica,sans-serif;"&gt;10.x&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;</description>
    </item>
  </channel>
</rss>