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.

Our evolving relationship with social media

Michael PhillipsYou may have noticed that a lot of web hosts are not particularly active on social media. Many don’t even have public-facing community forums. We’ve always had a forum because we believe they’re indispensable when it comes to making information and knowledge available, and as a place where people can help each other.

As far as social media is concerned though, we didn’t hop on that train right away. DiscountASP.NET started 3 years before Facebook and Twitter opened to the public, and 8 years before Google+ decided to do their thing.

But when those things came along, most businesses didn’t immediately take advantage of them, and we were no different. Eventually though, we made our way to Twitter, then Facebook. But it was when Google+ came along that we started to take a more active role in social media.

There were a lot of benefits to using Google+ when it started (though now most of those benefits have disappeared as Google slowly dismantles Plus and takes it toward a communities-only kind of thing). But since we were putting a lot of time and energy into Plus when it started, it was only natural to put more time and energy into Twitter and Facebook as well.

So we put a lot of resources into all three, with the expectation that we would get a dialog going with our users and the world at large. We did Google+ Hangouts, published new articles often, responded to every social media interaction.

That’s what all the pundits and social media experts were telling us we should do. They assured us that, “If you build it they will come,” so we built it and nurtured it and painted it nice colors and put up decorative lights. It was a great and glorious thing.

But not really.

aircraft2

What we learned after committing those resources to social media was that the people who use web hosting services don’t much care about what we have to say outside of issues that are directly related to what we do. They don’t want to hang out with us. Well, on social media, anyway. Our blogs still get a lot of traffic and our forums continue to be used. But Twitter, Facebook, Google+? Not so much.

There are certainly a lot of you on Twitter and Facebook – and yes, some of you are even still on Google+ – but you’re not so interested in chit chatting with your web host on there.

Now, I have to tell you, we are an interesting bunch, but I can’t blame you for not being our pals. For not wanting to hang out and talk about motorcycles or vinyl LPs or gardening. Interacting with a company can feel a little…weird. Or one-sided in a lot of cases. Plus, you’ve got work to do. And so do we.

So we’re okay with not being your Facebook friends. But we have seen that you do expect to be able to use social media to find out what’s happening when you see a problem. So we’ve shifted our social media focus to providing notices about upcoming maintenance and alerting you to problems as they’re happening.

And as far as that goes – well, here’s my social media calendar for DiscountASP.NET for two weeks in October:

social-media-scheduling

As you can see, it’s a lot of ground to cover. But you’ve let us know that’s what you want, so we’re happy to do it.

Those are just the scheduled things, the things we know are going to happen. The unscheduled activity is an entirely different kettle of gumbo, and it can be a bit frantic and crazy around here when something goes wrong and affects the entire network.

It’s crazy because we’re your favorite scrappy independent host, not a huge multinational conglomerate. Which means we don’t have a room full of people in front of computers here in the office, waiting patiently to answer your Facebook posts or Tweets. It’s usually just me and one or two members of the support staff, depending on what’s going on.

So if one of those big problems does happen, we’ll let you know on social media, but we’ll also usually point you to our forums (which are hosted outside or network) for more information, or to answer your questions.

That helps because we can give you updates and answer questions in one place, rather than three or six (or more). Imagine trying to answer every post on Facebook, Twitter and Google+ and work the helpdesks and forums for two brands when hundreds of people are posting and emailing. There’s just no way we can keep up on all of the social media sites at those times.

So if you post on Facebook when there is a problem that affects a large part of the network but you don’t get a response right away, it doesn’t mean we’re unaware of the problem, and we certainly aren’t ignoring you. We’re probably just, you know, busy.

The outage threads in the forums have traditionally been locked, but a while back we opened them up so you can talk to us in there. So next time you feel like something may be going haywire, check for us in the forums: DiscountASP.NET, Everleap.

Luckily problems that affect everyone are very rare, so we’re not often in a place where we’re overwhelmed answering your queries. If it’s a localized problem, something affecting one server or part of a server, we’ll always do everything we can to respond to you wherever you happen to be posting.

When we saw the writing on the social media wall we didn’t just fold up our tents and go back to the way things used to be. We adapted, and we continue to adapt every day. And I hope we’re adapting in a way that’s working for you. If we’re not – well you know where to find us.