Top 10 things we accomplished in 2016

Takeshi EtoAnother year flew by. I usually do a Top 10 list at the end of the year, but I was too swamped with family obligations to finish the post in December. But fear not, here is our Top 10 list of accomplishments for 2016!

  1. Launched ASP.NET Core Hosting
    Years in the making, what was to be ASP.NET 5 was renamed and launched as ASP.NET Core 1.0 in June 2016. And of course, we made ASP.NET Core Hosting available on our Windows 2012 platform. ASP.NET Core is a complete rewrite, a modular framework distributed via NuGet packages that supports side-by-side app versioning. It’s also cross-platform (Windows, Linux, Mac).
  2. Launched SQL 2016 Hosting
    sql 2016 hosting2016 also saw the release of the newest Microsoft SQL Server 2016. With new enhancements like stretch databases and temporal tables, we wanted to make it available to our customers as quickly as we could. And so SQL 2016 was launched in both the US and UK data centers!
  3. Launched SpamExperts Email Inbox Filtering and Inbox Archiving Solutions
    SpamExperts Spam Filtering and ArchivingWe’ve evaluated many spam filtering solutions over the years, and we finally found a partner who provided a good spam filter product at a very cost-effective rate. Most professional spam filter services charge per email box which gets pricey. With SpamExperts we can provide filtering on a per domain basis. Through SpamExperts, we provide Inbox Filtering, a premium spam filter solution with a feature-rich management portal, and Inbox Archiving, a service that will store a backup of your clean incoming emails in encrypted format and in the cloud. Check it out.
  4. Launched PHP 7 Hosting
    Yes, we are a Windows hosting shop, but we keep up to date with PHP too. We launched support for PHP 7 and PHP 5.6.
  5. Kept pace with ASP.NET Updates
    Installing a new framework on the server is just a start. It’s also important to keep up to date its updates and with Microsoft’s rapid release cadence, this can be a challenge. But we are up to the task and we’ve updated our Windows 2012 platform with ASP.NET Core 1.1. In addition, even with all the fanfare with the release of ASP.NET Core, the truth is that ASP.NET Core is not yet at feature parity with ASP.NET 4.x. So we understand that not everyone is going to go all-in with bleeding edge frameworks. So we made sure to continue to update our .NET 4.x frameworks. We are now at ASP.NET 4.6.1 on our Windows 2012 hosting platform.
  6. Kept pace with Team Foundation Server Updates
    Setting and forgetting is not good enough. We also keep up to date with Team Foundation Server updates too. For example, we updated TFS 2015 with Update 3 and introduced new features such as Work Item Deletion and Team Project Creation/Deletion.
  7. Launched Free Website Migration
    With all our experience in migrating sites away from Windows 2003, and knowing that the pain of moving could stop people from migrating from their current host – even when they perform poorly – we introduced free site migration services. Sign up and then let us know that you want migration assistance. You can sit back and relax while we do all the heavy lifting to move your website.
  8. Continued with Enhancements at Everleap.com
    I’d be remiss not to mention the enhancements we launched over at our Cloud Hosting solution at Everleap.com. We launched both Shared SQL 2016 and Managed SQL 2016. We introduced WebJobs and Auto Heal on the Everleap SSD Reserved Cloud Servers. We launched support for multiple versions of node.js, added PHP 7 support, and added our Website Cloud Backup solution too.
  9. Renewed our Microsoft Gold Certification
    microsoft gold partner - hosting competencyFor the 11th year in a row, we renewed our Microsoft Gold Certification status. This is a significant investment of resources and time, but we feel that this status is a differentiator and shows our commitment to staying on top of Microsoft technologies.
  10. Attained Privacy Shield Certification
    privacy shield frameworkThe former EU Safe Harbor framework was struck down in a EU court, so the US and EU went to work to negotiate a new framework. In July 2016, a new “Privacy Shield” framework was approved. The Department of Commerce started accepting certifications in August 2016. We worked with our partner, Truste, to help get us certified and we were able to achieve Privacy Shield certification.

So that’s the Top 10 for 2016. As we look forward, we’ve been planning for 2017 and there are a lot of things brewing. We will keep making enhancements to our hosting services, and if you have any suggestions or feedback, please let us know.

We wish you a very happy new year!

ASP.NET Core Updated to 1.1

Michael Phillips.NET Core 1.1 is now available on all DiscountASP.NET servers.

But wait, wasn’t it just back in November that we announced that .NET Core 1.0.1 was available? Why, yes it was! And .NET Core 1.0.1 is still available, right alongside .NET Core 1.1.

The different versions exist because Microsoft is developing .NET Core with both “Long Term Support” (LTS) and “Fast Track Support” (FTS).

LTS (currently 1.0.1) is a slower development cadence, focused on stability and use on production sites. FTS (currently 1.1) is the bleeding edge stuff that so many of us love to tinker and experiment with, but probably don’t want to use on our production sites.

Our goal is to remain current with the LTS versions, while also providing you with the the latest FTS versions (though implementation of the latest FTS version may not always be as rapid as the LTS version).

Microsoft plans to continue work on the LTS and FTS versions simultaneously, so when you’re developing for production, remember that the LTS version should always be the more stable of the two.

So yes, .NET Core 1.1 is now available on all DiscountASP.NET servers.
And so is .NET Core 1.0.1 (though .NET Core 1.0.3 should be here very soon…).

This post on the MSDN site goes into much more detail about the versioning and development schedule than we can here, so if you’re curious, take a look at what they have to say.

New ICANN Domain Update Rules Go into Effect Today

Michael PhillipsWe mentioned previously that on December 1st new ICANN rules are going into effect that change the way some domain contact information changes are processed. Well, here we are, and now we know a bit more about how the changes are going to be handled by our registrar, OpenSRS, so here’s an update.

First, the change affects all “generic top level domains.” Those are domains like .com, .net, .org, .biz, .info, etc., and it includes all of the new domain extensions, like .blog, .photo, etc. Country code domains such as .uk, .tv, .co, etc. are not governed by ICANN, so they are not affected.

icannAfter December 1st, when you change the first name, last name, email address or organization for the registrant (that’s the domain name owner) you’ll have to approve the change in two separate emails. This only applies to changes made to the registrant’s contact information. Changes to the administrative, billing or technical contacts for your domain are not affected.

The reason there are two emails to respond to now is because changes to the registrant’s name, organization or email information are now treated the same way a “registrant change” has always been treated. The difference being, in the past that “registrant change” was assumed to be a change of ownership from person to person, so emailing both parties made sense.

But now that those emails are triggered any time you update something like your email address, those two emails will go to the same person – you. Unfortunately, you still need to approve the change by clicking a link in both emails, or the change will fail.

I know, it doesn’t make any sense and it complicates a previously simple operation, but this is the way it’s going to be done now, so we’ll just have to adapt.

How you can avoid problems or delays related to the change

  • Take a few minutes now to make sure your registrant (domain owner) information is up to date, especially the email address.
  • When you change the first name, last name, email address or organization for the registrant (domain owner), but are not transferring ownership to another person, make sure you approve the change by clicking the link in both emails that you receive.
  • Additionally, you can avoid any problems or potential delays by granting OpenSRS (our domain registrar) “Designated Agent” status, which gives OpenSRS the right to automatically approve “Change of Registrant” updates for you. This option will be available on the confirmation page that will be linked to in the change approval email(s).

For more details on the new policy, please see this Knowledge Base article.

DiscountASP.NET Attains Privacy Shield Certification

Takeshi Etoprivacy shield frameworkI’m happy to announce that we officially received our Privacy Shield certification, working with our privacy management solutions partner, Truste.

The Privacy Shield framework replaces the former Safe Harbor framework. The Privacy Shield framework was approved in July 2016 and the U.S. Department of Commerce started accepting certifications for Privacy Shield in August 2016.

We are committed to protecting the privacy of our customers, and achieving Privacy Shield certification is one of the ways we demonstrate that commitment.

No More Broken Links

Ray HuangAre broken links affecting the SEO score and ranking of your website? Fear not, because there is a tool available to you on DiscountASP.NET which can easily fix that problem and help you move your site to the top.

It’s done by setting up custom rewrite providers through the URL Rewrite module which store rewrite/redirect mappings in either an SQL database or text file. In this article I will show you how to set them up.

There are 3 types of providers available for you to use (DbProvider, FileMapProvider, and FileContainsProvider). The DbProvider is used to retrieve mappings from an SQL database, the FileMapProvider is used for a text file, and the FileContainsProvider is used to check if a list of strings in a text file are part of a sub-string in the provider’s input string. Applications for its use include blocking robots or redirecting multiple domain names to a single one.

  • To start configuring any of the providers, launch IIS Manager and double click on the URL Rewrite module icon.

urlrewriteicon

  • Click on the View Providers… link under Manage Providers to your right.

viewproviders

  • Then click on the Add Provider… link to your right.

addprovider

  • In the Add Provider window, enter a name and select the provider you want to use in the Managed Type drop-down list. Click on the OK button to save the setting.

addproviderwindow

Configuring the DbProvider Example

In order to use the DbProvider, you’ll need to order a Microsoft SQL Server add-on database. After purchasing the add-on, log into your database using SQL Server Management Studio. Create a table using the Table Designer (GUI) with 2 columns of data type nvarchar that are not null.

table

Or execute the following script in a New Query window:

CREATE TABLE [dbo].[RewriteTable](
[OriginalUrl] [nvarchar](256) NOT NULL,
[NewUrl] [nvarchar](256) NOT NULL
)

The table name and columns are arbitrary (you can call them anything you want as long as they make sense to you). It’s not important in setting up the provider, but you’ll also need to create a stored procedure using the following code:

CREATE PROCEDURE [dbo].[GetRewrittenUrl] 
@input nvarchar(256)
AS
SELECT rt.NewUrl 
FROM dbo.RewriteTable rt 
WHERE rt.OriginalUrl = @input

The name of the stored procedure is what is important as it must match when you setup the provider. If you created your own custom columns, remember that they need to match in your stored procedure.

Now go back into IIS Manager, navigate to the Rewrite Providers section (i.e. follow the steps in the first section above to the point where you add the provider), highlight it and click on the Add Provider Setting… link to your right.

addprovidersetting

In the Add Provider Setting window, you’ll need to configure 3 values. Select the Name in the drop down box and enter the following:

addprovidersettingwindow

  • SQL Server connection string – Enter the connection string found in your Control Panel without the encapsulating quotes and replacing the password mask with your actual password (e.g. Data Source=tcp:sql2k1201.discountasp.net;Initial Catalog=SQL2012_123456_sql2012;User ID=SQL2012_123456_sql2012_user;Password=election2016;) Click on OK to save the setting.
  • Stored procedure name – Enter the name of the stored procedure you created above.
  • Cache minutes interval – set it to 0 (default) if the values in your table will not change or set it to a positive number to specify a time when it will expire (used if you plan to change the rewrite maps in your table frequently)

You’ll have to do this 3 times, one for each setting. Now, in your root web.config file place the following rule in the <rewrite> section:

<rule name="DbProviderRule" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{StoreInDb:{R:1}}" pattern="(.+)" />
    </conditions>
    <action type="Redirect" url="{C:1}" />
</rule>

Replace “StoreInDb” with the name of your provider if you chose something different. Your web.config file look something like this now:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <providers>
        <provider name="StoreInDb" type="DbProvider, microsoft.web.Iis.Rewrite.Providers, Version=7.1.761.0, Culture=neutral, PublicKeyToken=0545b0627da60a5f">
          <settings>
            <add key="ConnectionString" value="Data Source=tcp:sql2k1201.discountasp.net;Initial Catalog=SQL2012_123456_sql2012;User ID=SQL2012_123456_sql2012_user;Password=election2016;" />
            <add key="StoredProcedure" value="GetRewrittenUrl" />
            <add key="CacheMinutesInterval" value="0" />
          </settings>
        </provider>
      </providers>
      <rules>
        <rule name="DbProviderRule" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{StoreInDb:{R:1}}" pattern="(.+)" />
          </conditions>
          <action type="Redirect" url="{C:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Make sure none of the sections are missing as they are all required to invoke the rule. That’s it. Now, you can fill your database with 1 to 1 mappings to redirect URLs. For example, say you have a deprecated product link http://www.YourHostedDomainName.com/products/index.html which you want redirected to http://www.YourHostedDomainName.com/toys/index.html, just enter “products/index.html” in the OriginalURL column and “toys/index.html” in the NewURL column of your database.

ssmsurls

When you enter the old URL in a browser, you’ll be redirected to the new one. The tool can also be used to rewrite URLs instead of redirecting them for SEO purposes. It may also come in handy if you’re not good with coming up with regular expressions for use in your URL Rewrite rules or if you find URL Rewrite difficult in general to understand. You can map everything using the database. It’s just a lot more work if you have a very large site, but it can be tremendously useful for smaller sites.

Configuring the FileMapProvider

The FileMapProvider works the same way as the DbProvider except that you are storing the URLs as a CSV (Comma Separated Value) pair in a text file. Setup the provider following the instructions in the first section of this article. Then create a text file with the mapping. For example:

products/index.html, toys/index.html

We’ll also place the text file in the /App_Data folder for security since it cannot be accessed through a web browser. Then go back to IIS Manager and configure the provider setting using the Add Provider Setting window. There is only 1 value you need to set:

  • File path – Make sure you enter the value in this way {DOCUMENT_ROOT}\App_Data\mappings.txt or use an absolute path (e.g. E:\web\username\htdocs\App_Data\mappings.txt)

For the rule in the web.config file, you can use the same rule as provided from the previous section except replace “StoreInDb” with the name of your FileMapProvider (e.g. StoreInFile).

Configuring the FileContainsProvider

The FileContainsProvider is setup in the same way as the FileMapProvider with the exception of the text file. It’s just a list of strings (text) separated by carriage returns. I mentioned a couple of use cases earlier, and I will provide you with an example of how you could apply it to your site. The following instructions work only if you have purchased the Unique IP address add-on or a couple of domain pointers. First let’s create a text file with a list of domain names (either sub-domain names or domain pointers), call it list.txt and place in it our /App_Data folder. Then setup the FileContainsProvider to point to this list.txt file. Add the following rule to your web.config file:

<rule name="FileContainsProviderRule" stopProcessing="true">
    <match url=".*" />
    <conditions>
        <add input="{FileContains:{HTTP_HOST}}" pattern=".+" />
    </conditions>
    <action type="Redirect" url="http://www.mainsite.com" />
</rule>

Try typing any of the sub-domain names or domain pointers in your list in a browser. You’ll notice all the requests will be redirected to the homepage of your main site.

ASP.NET Core Updated to .NET Core 1.0.1

Takeshi Etoasp.net hostingWe’ve updated our ASP.NET hosting platform to ASP.NET Core 1.0.1. Even though the framework is deployed along with your app now, the ASP.NET Core 1.0.1 update required some server side updates. The .NET Core 1.0.1. update is a patch version and does not include any new features, but we thought it important to test and update our servers since there are some security updates and since Microsoft  considers this a Long Term Support (LTS) update, so we wouldn’t be able to get Microsoft support without running the latest LTS updates.

If you are using ASP.NET Core, 1.0, you don’t need to do anything for your application to use .NET Core 1.0.1. It’ll roll-forward to .NET Core 1.0.1 by default. But note that the roll-forward policy only applies to patch versions.

If you encounter any issues, please contact our Technical Support team.

php 7 Is Available Now

Michael Phillipsphp7We’ve added php 7 to the options available in the ASP.NET/PHP Version section of Control Panel.

php 5.3, 5.4, 5.5 and 5.6 have also been updated to the latest builds (in the case of 5.3, 5.4 and 5.5 they are the final builds).

You may want to consider weaning off the 5.x versions of php, as 5.3, 5.4 and 5.5 are past their end of life. php. 5.6 will still be viable for a couple more years, so if you’re using an earlier version, take a look at moving to 5.6, or better yet, php 7.

To change the php version for your site, go to the IIS Tools section of Control Panel, and look for the dropdowns on the “ASP.NET/PHP Version” tab.

Domain Registration and Management Changes Are Coming December 1st

Michael PhillipsThere are some confusing aspects to domain name registration and maintenance, and unfortunately, some changes are about to be implemented that will probably add to that confusion.

On December 1, 2016, new ICANN rules go into effect that create another step when you change the first name, last name, contact email or organization fields for your domain. Doing any of those things will now trigger the “trade process.” Which means those minor ownership information changes will now be treated the same way a domain transfer is treated.

The domain owner will have to approve those changes in two separate emails. The “current” and “previous” owner (which are usually the same person in the case of most of the changes above) need to approve the change or it will fail.

So, for example, if you update your name or the name of your organization, you’ll have to approve the change in two emails. If you update the email address associated with a domain name, you’ll have to approve that change at both the old and the new email address. That introduces some potential problems if you don’t have access to old and new email addresses, or you miss one of the two notices that go to the same address.

The changes are taking place due to an ICANN review of the transfer process that began almost a decade ago. There were potential issues with the original transfer policies that made domain hijacking a little too easy, so ICANN began looking at “special provisions” for registrant changes in order to prevent some of those problems.

Which sounds good, but what we’ve ended up with is a process that may make it more difficult to hijack a domain, but have the unintended effect of making a lot of day-to-day domain management tasks more difficult and confusing.

We’re not yet certain exactly how the changes will work for domains registered through DiscountASP.NET or Everleap. But we’ll do what we can to keep the confusion to a minimum, and we’ll give you some details when we know exactly how the changes will affect your domain management processes.