CheapWindowsHosting.com | Best and cheap Node.js hosting. The web is an ever-changing technology landscape. There are too many web technologies, from simple to complex, and explaining each and every one in detail cannot be done in a single post. So, in this post, we will be doing a comparison between Node.js and PHP.
To understand these concepts, you need prior knowledge in web technologies like HTML, JavaScript, Node.js, PHP.
To begin with, let’s start with a brief discussion about Node.js and PHP.
Node.js
An important thing to remember about Node.js is that it is not a webserver. Node.js on its own doesn’t do much and doesn’t work like Apache. There is no config file, where you point it to the HTML files.
The main objective of Node.js is: use non-blocking, event-driven I/O to remain lightweight and efficient in the face of data-intensive real-time applications that run across distributed devices.
If you want it to perform like a HTTP server, you need to write an HTTP server (with the help of its built-in libraries). Node.js is just another way to execute code on your computer. It is simply a JavaScript runtime.
PHP
PHP is an interpreted scripting language that is used as an alternative to ASP on UNIX-based servers. PHP code typically runs on Linux-based and UNIX-based Web servers, and can run on Windows-based servers with an installed interpreter.
PHP is commonly used to access databases and provide server-side form and e-commerce processing. As with ASP code, PHP code is contained within the body of an HTML page.
Comparing Node.js and PHP
JavaScript syntax is not what makes Node.js better than PHP but its easily understandable code. When it comes to PHP there are different ways to develop a web application in PHP; there is the old and ugly way everybody absolutely hates and then there is the better and modern way of developing in PHP.
Let’s start with the Syntax used by both of them.
Syntax:
Both Node.js and PHP have access to the command line interface via $ php -i and $ node.
Printing a statement
The following code prints ‘Hello Acadgild’ in PHP:
echo 'Hello alexia';
The below command in Node.js will provide the same phrase as output:
console.log('Hello Alexia');
‘For’ loop
The ‘for’ loop in PHP looks like this:
for ($i = 1; $i <= 100; $i++) {
echo $i;
}
They’re strikingly similar to the one in Node.js:
for (var i = 0; i <= 100; i++) {
console.log(i);
}
Both technologies have a good range of editors, IDEs, debuggers, validators and other tools.
Node.js has a tool called NPM — the Node Package Manager. NPM allows you to install and manage dependencies, set configuration variables, define scripts and more.
PHP’s Composer project was influenced by NPM and is better in some respects. However, it’s not provided in PHP by default and has a smaller active repository, making minimal impact within the community.
NPM is partially responsible for the growth of build tools such as Grunt and Gulp which have revolutionized development. PHP developers will probably want or need to install Node.js at some point, But it’s not true the other way around.
Both PHP and Node.js are functional languages with a relatively later addition of OOP to PHP.
Performance
PHP is no slacker and there are projects and options which make it faster. Even the most demanding PHP developer rarely worries about speed but Node.js performance is generally better. Of course, performance is largely a consequence of the experience and care taken by the development team but Node.js has more advantages compared to PHP as discussed below.
Dependencies:
Node.js doesn’t need many dependencies and there are frameworks, which does the work instead, like Express.
Express is a minimal and a flexible Node.js web application framework that provides a robust set of features to develop web and mobile applications. It facilitates a rapid development of Node-based web applications.
When it comes to PHP, all requests to the PHP applications has to be routed through a web server which starts the PHP interpreter, which indeed runs the code for you.
Interpreter:
Node.js is smaller and better than the PHP interpreter. It’s less burdened by legacy language support and Google has made a huge investment in V8 performance.
Environments
Web developers often need to create applications which aren’t strictly for the web, e.g. build tools, database conversion scripts, etc.
There are ways to use PHP for desktop and command-line app development. PHP is a server-side development technology. It’s good at that job but is rarely stretched beyond those limits.
A few years ago, JavaScript would have been considered more restrictive, but Node.jshas changed that perception and since then there has been an explosion of JavaScript projects. You can use JavaScript anywhere and everywhere — in the browser, on the server, terminal, desktop and even embedded systems. Node.js has made JavaScript omnipresent.
Newer Code and Modern Features add advantage to Node.js
One more advantage of Node.js is its new plugins and modern features. When it comes to PHP, there is no doubt that there are many open-source PHP files, but few are year’s old plug-ins which people wouldn’t like to use. Anyway, who wants to spend hours copying the code that hasn’t been updated in years, right?! Node.js plug-ins are not only newer, but they were built with full knowledge of the latest approaches like express.js.
Conclusion
Since node.js is a major component in web development, it is worth the time, money and effort for your developers to learn node.js.
Node.js and PHP are a good comparison. They’re both open-source, primarily aimed at web development and applicable to similar projects. PHP is a long-established language, but Node.js is a young upstart receiving increased attention.
Node.js is single-threaded and uses only a single CPU core. When it comes to adding concurrency on a multi-core server, there is some work being done by the Node core team in the form of a cluster module. You can also run several Node.js server instances pretty easily behind. PHP is NOT single-threaded by nature.
Node apps run great over long periods of time. PHP is not meant to be run for extended amounts of time.
Node.js is well suited for applications that have a lot of concurrent connections and each request only needs very few CPU cycles, because the event loop is blocked during execution of a function.
CheapWindowsHosting.com | Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike.
How To Installing Git on Windows
There are also a few ways to install Git on Windows. The most official build is available for download on the Git website. Just go to http://git-scm.com/download/win and the download will start automatically. Note that this is a project called Git for Windows, which is separate from Git itself; for more information on it, go to https://git-for-windows.github.io/.
Another easy way to get Git installed is by installing GitHub for Windows. The installer includes a command line version of Git as well as the GUI. It also works well with Powershell, and sets up solid credential caching and sane CRLF settings. We’ll learn more about those things a little later, but suffice it to say they’re things you want. You can download this from the GitHub for Windows website, at http://windows.github.com.
Installing from Source
Some people may instead find it useful to install Git from source, because you’ll get the most recent version. The binary installers tend to be a bit behind, though as Git has matured in recent years, this has made less of a difference.
If you do want to install Git from source, you need to have the following libraries that Git depends on: curl, zlib, openssl, expat, and libiconv. For example, if you’re on a system that has yum (such as Fedora) or apt-get (such as a Debian based system), you can use one of these commands to install the minimal dependencies for compiling and installing the Git binaries:
In order to be able to add the documentation in various formats (doc, html, info), these additional dependencies are required (Note: users of RHEL and RHEL-derivatives like CentOS and Scientific Linux will have to enable the EPEL repository to download the docbook2X package):
When you have all the necessary dependencies, you can go ahead and grab the latest tagged release tarball from several places. You can get it via the Kernel.org site, at https://www.kernel.org/pub/software/scm/git, or the mirror on the GitHub web site, at https://github.com/git/git/releases. It’s generally a little clearer what the latest version is on the GitHub page, but the kernel.org page also has release signatures if you want to verify your download.
Then, compile and install:
$ tar -zxf git-2.0.0.tar.gz
$ cd git-2.0.0
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
After this is done, you can also get Git via Git itself for updates:
CheapWindowsHosting.com| Best and cheap DotNetNuke hosting. There are some ways DNN can improve the SEO of your site.
Customizing Page Titles And Meta Data
1. Login as Administrator 2. Go to Page -> Edit Page -> Page Settings -> Go to tab : Page details then change the Page Title, Description
Drop-down Navigation Built In CSS
Navigation by CSS really just means using simple HTML to show the page, and using CSS to style the menu instead of arcane amounts of script or other tricks. This assists with SEO by making it very easy for a search engine crawler to index your site and understand the structure of the site via the menu. Simple HTML and CSS menus are fast to parse and simple for a search engine bot to understand. Fast and simple is good.
URL structure
1. Login as an administrator, then navigate to the page on which you want to set the URL 2. Using the ‘Edit Page’ dropdown – go into the Page Settings 3. Type in the URL you want to use in the Page URL field 4. Click on ‘Update’.
Support For The REL=CANONICAL Tag
To set a canonical link on your page, here’s what you need to do
1. When logged in as an administrator, bring up the page settings on the page you’re on, using the Edit Page->Page Settings link 2. Switch to the ‘Advanced Settings’ tab of the Settings screen, and scroll down until you find the ‘Appearance’ section 3. In the ‘Page Header Tags’, copy in your Canonical Link Element tag – this is in the format of: http://example.com/your-canonical-url” /> 4. Click Update Page when you are done.
XML Sitemap Creation Function
Here’s how to submit your DNN sitemap to search engines:
1. Log on as an administrator, and go to the Admin->Site Settings page 2. Find the ‘Site Marketing’ section and expand it 3. You will see the ‘Site Map URL’ section with a submit button next to it. Click ‘Submit’ to submit this to the selected Search Engine.
No Frames Or IFrames
As the Search Engine Watch article says, hosting frames within pages makes it harder, if not impossible, for a search engine to understand a site. The answer for DNN is simple: we don’t use Frames or IFrames anywhere. You can install IFrames if you want, but they aren’t used as part of the application.
301 Redirects, Not 302
Here’s the steps to create a 301 redirect to a DNN page:
1. Make sure you’re logged in as an administrator, and go to the Edit Page->Page Settings link to bring up the page settings 2. Navigate to the ‘Advanced Settings’ tab of the Page Settings popup, and find the ‘URL Management’ section and expand it 3. To create a new redirect, click the ‘Create’ button in the top right of the URL Management section 4. For the Site Alias, by default it will choose the primary alias for your site. You can also choose any other alias you can configured for your site. You would choose a different alias when the URL you want to redirect was from a different alias to the one the site currently uses (oldexample.com/my-url redirected to newexample.com/my-new-url) 5. In the URL Path input box, type the path of the URL as it would appear on the end of the selected site alias. You don’t need to include the leading / as this will be added for you. 6. In the URL Type drop-down, choose ‘Redirect (301)’ – this specifies the URL you entered will be redirected to the current page using a 301 HTTP status 7. If the URL you wish to redirect includes a Query String (the code to the right of a ? in the URL), then enter that in the Query String box. This is optional – you don’t need to enter anything here if you don’t have the value. 8. At this point your URL redirect is finished- click ‘save’. This will add it to the list of ‘Custom URLs’. 9. Click on ‘Update’ to close the Page Settings. Your URL Redirect is now active and can be tested.
Pagenavigation
This factor relates to the use of the rel=next and rel=prev tags. These tags help a search engine understand when pages of content are part of a paginated results set – where there are multiple pages of content for the results of a search or listing. DNN doesn’t have a set of paginated results as part of the standard product. The search feature of the site uses dynamically loaded content instead of URL-paginated results. However, the extensibility model of DNN means that you can write whatever feature sets you use, and modify the output HTML to include pagination tags.
Custom ALT Tags
It’s easy to set the Alt attribute on an image using the in-built content editor. Here’s how to do it:
1. Login as an Administrator, and put the page you want to edit into Edit Mode using the ‘Edit Page’ drop down 2. Edit the content you wish to change 3. When the HTML editor has loaded, select the image, and right-click on the image to select the properties of the image 4. In the image properties, update the ‘alt’ text field. Choose a phrase which best suits the image, and which also matches the desired search terms or search phrase you want the page to rank for. 5. You can check the HTML for the specific image you are setting the Alt tag for – here you can see the HTML tag has been updated as we would expect. 6. Click on Update to update the page.
Breadcrumb Navigation
Breadcrumbs are included in the default skin of DNN, so you can copy from there. Here’s how that is done:
1. The Breadcrumb skin object is included in the skin references 2. The Breadcrumb skin object is then included within the skin HTML and the attributes for the starting level and the breadcrumb separator are set: Breadcrumb Skin Object DNN SEO 3. At runtime, the skin object applies to the current page in the hierarchy and shows the breadcrumb levels including the URLs for the page.
CheapWindowsHosting.com | Best and Cheap ASP.NET hosting. The new Windows Azure Website feature is easy to use. You can deploy an application by publishing from Visual Studio or by pushing code with git. There are a few extra configuration steps I’ve found useful.
Using PUT and DELETE with Azure (or IIS, or IIS Express for that matter) requires some extra configuration before the server will allow messages with these methods into the processing pipeline. By default, IIS will only allow GET, HEAD, POST, and DEBUG. The following configuration section goes inside of <system.webserver>, and will tell IIS to process PUT and DELETE, too.
Note: the final release version of ASP.NET MVC 4 will include this configuration in web.config by default when you create a new project*, but it is still handy for upgrades and to generally know why it exists.
Before IIS will serve a static file it needs to know the media type associated with the file. Video and SVG files were refusing to work until I added the following (also in the <system.webserver> section of web.config):
The <remove> entries will allow the configuration to work even on local servers that already have the media types configured (you’ll have a runtime error if you add a duplicate entry, but there is no error if you remove an entry that doesn’t exist).
Automatic Migrations
Finally, if you are using Code First Entity Framework migrations you can have them execute automatically after a release push by adding to the Web.Release.config file. Web.config transformations even work with git deployments to Azure.
CheapWindowsHosting.com| Best and cheap ASP.NET hosting. As the usage of the internet and the number of web applications over the internet have gone exponentially high there are bad people who continuously work around the clock to hack them. It may be for personal gain or just as an amateur act. Despite the intention of the bad guy the damage caused to the organization hosting the site or its users should be taken into account. As a professional web application developer it is a must to be aware of the best practices to follow in order to make the application more secure. In this article I will be listing and explaining my top 7 tips for developing a secure asp.net application.
Have you ever thought about someone framing your website onto theirs, making your users to be the victims of click jacking? Yes, the attackers can load your website onto their site in an iframe. They can then skillfully place their transparent controls over your website and fetch the PII information, user credentials, make them perform an unwanted task like exposing their financial information, etc.
In order to prevent that you will have to use a frame busting technique. The following script will not allow your website to be iframed. This can be placed in your master pages.
<script type="text/javascript" language="javascript">
//Check if the top location is same as the current location
if (top.location.hostname != self.location.hostname) {
//If not then set the top to you current
top.location.href = self.location.href;
}
</script>
In addition to the above script don’t forget to add the following header, which informs the browser to DENY framing of this website. This is supported in all major browsers except IE versions less than 8.
The header should be added in the global.asax application start event.
Though we have many techniques to perform the security preventions inside the application it is most important to prevent the bad data from being entered into your website at the first place. Most attacks happen through the query string values passed through the URL. It is a best security practice to define a common place like an HttpModule to white list the URL, i.e. sanitize the entire URL with a set of white listed characters and drop all the bad ones. It means you will not encourage any other characters apart from a white listed set defined in your application.
It is important for you to know that black listing is not a foolproof mechanism and it can be broken by the hackers easily.
Practice of Encoding the Data
While processing and sending, the data in the response that is fetched from outside the trust boundary should always be encoded. The type of encoding may differ based on the usage of the non-trusted data. For example perform an HtmlEncode for the data that is sent to the client page.
Encoding the data will make the XSS scripts inactive and prevent them from being executed. Microsoft has provided the AntiXss library, which provides more sophisticated encoding methods including the JavascriptEncode.
Using Cookies
As a web developer you should take utmost care while using cookies, which may open a back door for the hackers to get into your applications. Following are the best practices while using a cookie to store information.
Is your website is hosted under SSL? Then be sure to mark your cookies as secure. This will make them available only in the SSL transmissions.
HttpCookie cookie = new HttpCookie("MySecureCookie");
cookie.Value = "This is a PII information";
cookie.Secure = true;
If your website is not SSL enabled then always encrypt the values using a strong encryption mechanism like AES 256 and then store them in the cookies.
Secure the Service Calls (WCF / Web Service)
Are you exposing WCF services through basicHttpBinding? Then think again because the messages transmitted over will be plain text and any intruder will be able to trap the requests and even simulate them easily. Use wsHttpBinding, which will transport the messages in an encrypted format, which makes the life of the intruder hard.
Though you make lots of protections for your WCF or web services it is a best practice to host the services under an SSL layer.
Never Deploy the Application with debug=”true”
It is strongly recommended not to deploy your applications in the production environment with compilation debug=”true” in your web.config. This will result in a big nightmare for performance and security of the application.
This may leak too much information for the attackers, for example the stack trace in the event of an unhandled exception and the debug trace information. Such exposure of the internals will be good bucks for the attackers
Turning off ViewStateMAC will create a security loophole in your asp.net application if you are using Viewstate on your web pages. The intruders will easily be able to intercept, read the 64 bit encoded values and modify them to do some bad things to your website. Having it turned on ensures that the viewstate values are not only encoded but also a cryptographic hash is performed using a secret key.
<pages enableViewStateMac="true"></pages>
I hope this article is useful for the developers who thrive at making their asp.net application an absolutely impossible place for the hackers to deal with.
CheapWindowsHosting.com | Needless to say that in the continuously evolving world of web technologies to run a competitive business, your site should be in the top 10 list in most of the search engines. To pack a site with compelling, fresh and useful content and to make regular changes and updates users often turn to CMS solutions to get the job. It has been an endless debate in between WordPress, Joomla and Drupal over which one is better than the other in terms of SEO capabilities.
There is over thousand open source CMS available at the market but when major content management principles are of concern, three names like WordPress, Joomla and Drupal come first. When it comes to SEO – one of the unresolved questions is which of the aforementioned three provides the best optimization features? Lets explore from a SEO perspective and figure out which one is an award-winning in terms of optimization capabilities.
WordPress is a great website platform to use that tries its best by simplifying the process of optimization for its users. However, the real SEO power of WordPress doesn’t come out the box, but is found among the countless plugins available. There are some fantastic plugins which make advanced SEO super-easy in WordPress. Consider using popular plug-ins such as Yoast or All in One Pack that really let your optimization efforts soar. To reflect it – WordPress allows to create tags for posts, something which Joomla doesn’t allow without the use of an extension. Besides, it is possible to optimize permalink structures and set all the appropriate metadata for pages and posts. The bottom line is that in WordPress it is quite possible get high rankings even if you are totally new to the whole website game.
Joomla requires the most initial care and attention in terms of SEO, but, contrastingly, it has great potential to rank very high in case a website and pages are set up properly. The software contains basic SEO-optimization functionality that can be extended by experienced developers’ hands. In Joomla it is possible to turn on SEF URLs, take it a step further by enabling URL rewriting and also choose whether to enable URL suffixes or not. Besides, you can add global meta description and meta keywords, as well as define meta tags and title tags at a page level. However, all the process is not as user-friendly as it potentially could be. In short, if a Joomla website needs more than just a basic optimization, one should be ready to get hands dirty since Joomla proper on-site optimization is not a one-click affair at all, especially for newbies and first-time users.
Drupal has the best SEO capability that is readily available. It provides its users with several modules available for any SEO activity and tracking of the web statistics. It can automatically produce customizable meta tags or create title based URL nodes for a website, a characteristic that is lacking with WordPress and Joomla. Additionally, it supports RDF and integrates very easily with Google Analytics and offers more advanced SEO facility settings. However, there’s one roadblock to unleashing its powerful SEO features – Drupal is extremely challenging for those without much website experience.
To conclude with another good news, all content management systems need some extra work or add-on SEO modules to maximize their SEO capabilities. To be specific, designers and average users swear by WordPress, while programmers and geeks drool over Drupal. Joomla meets everybody somewhere in the middle. Which one is best is quite a loaded question because there really isn’t a best – there’s only the best for the situation you’re in. Consequently, take your time to evaluate your experience, requirements and budget and make probably the most important decision in your life. In case, you are ready to take the plunge and migrate to WordPress, Joomla or Drupal.
CheapWindowsHosting.com| Cheap and reliable DotNetNuke 8.0.3 hosting. In this post I will show you how to installing DNN using WebMartix. DotNetNuke is a widely used open source CMS for building web sites and web applications on the Microsoft Web Platform. DotNetNuke is often used in conjunction with WebMatrix, a free tool that allows for the creation, customization and publication of ASP.NET web The following tutorial will demonstrate how quick and easy it is to get your DotNetNuke application up and running!
Installing DotNetNuke
To install the DotNetNuke application from WebMatrix:
Select the App Gallery option.
Choose the DotNetNuke Community Edition icon. The application can be given a new name or keep the default name.
Select a database.
Choose SQL Server and ensure that the Windows Integrated Authentication radio button is selected.
Click Next.
Once prompted to install DotNetNuke, click I Accept. The DotNetNuke Installation will take a few minutes to complete. Once completed, you will receive a confirmation message.
Immediately after Installing DotNetNuke, load the DotNetNuke application by clicking the OK button.
Configuring DotNetNuke
To configure DotNetNuke in WebMatrix, use the Installation Wizard to complete the following steps:
Click the Run button on the menu ribbon. Be sure to run the root folder of the DotNetNuke application.
Upon running the DotNetNuke application, there will be three options for installation:
Customer
Typical
Auto
For purposes of this article, the Typical installation will be used.
The Installation Wizard will perform a permissions check. Upon completion, you will be notified.
After the permissions check, enter your database information.
Once all of the database information is provided, the Installation Wizard will install the database and create the connection for you.
Note: The installation of the database could take a few minutes to complete. Once installed, a confirmation message will be provided.
Once the confirmation message is received, click Next to proceed.
Provide your host information on the next screen.
Click Next.
Once the installation is complete, you will be able to log into your DotNetNuke portal.
CheapWindowsHosting.com | IIS Express provides us a set of flexibility to simulate an IIS hosted environment and test the application directly from the Visual Studio. In the previous post you have seen how we can enable SSL in IIS Express by just a single enabling property. In this post I am going talk about few more important things that you should as a developer. This will help you in dealing with IIS Express.
Where does the basic configuration information stored ?
The basic information related to the IIS Express are stored inside the project file (proj file) within the property group information section. To view it, Open the Project File in edit mode ( In this case I will strongly recomand you to use Visual Studio productivity Tool ) ; where you can edit the project file using “Power Command” as shown in the image below.
Once you have the project file in edited mode, you can search for below configuration section, where you can see the application information related to IIS Express are set.
You can change the configuration editable values and update the project files to take the changes effects.
If your application has the SSL Enabled, IISExpressSSLPort will have the values specified for the SSL port number.
...<IISExpressSSLPort>44302</IISExpress.SSL.Port>
Where is the configuration settings related to bindings and virtual directory?
Project files have the information related to the IIS Express and it’s basic settings; whereas there are several configuration files that are required to host and run a web application. You can find all the IIS Express related files under \users\<username>\My Documents \ IISExpress\Config .
Open the “applicationhost.config” file in any text editor, and search for your web application name
As you can see this section contains the information related with the physical path of IIS Express Virtual Directory, application pool and the several bindings information.
The aplicationhost.config files are user specific.
Applying Multiple Bindings With IIS Express
You can add additional bindings within the “bindings” elements to access your sites using different urls.
There is an additional application – IISExpressTray
When you press F5 to run the project, Visual Studio automatically launches the IIS Express and it will show up in your task-bar tray while it’s running.
You can right-click and select the “Application” to get the list of currently active URL’s for the current application. To navigate, you have to click on the site URL.
Along with the hosting sites, IIS Express ( IISExpress.exe) is the parent process of an another application “IISExpressTray.Exe”. You can launch this application by just right click on IIS Express Icon on system tray icon and then select “Show All Applications” .
Following snaps shows the overall process hierarchy of IIS Express with in Visual Studio.
Quick way to get the details of the site configurations
From the application url lists, you can select any of the url / sites ; IISExpress tray application will show you different additional details such as runtime, application path and configuration.
This is the easiest option to open the application configuration file for IIS Express.
That’s all ! Hope going forward this information will help you to work with IIS Express.
CheapWindowsHosting.com | Cheap and reliable ASP.NET hosting.A Content Management System makes it easy to manage your website content and design your own website. CMS allows you to manage every aspect of your website such as content, functionality and navigation, design, SEO and more. CMS enables you to easily create and update content without programming skills. The appearance of all content in CMS website is controlled by a set of templates that will make managing your website easier than you can imagine.
Cheap ASP.NET based Content Management Systems(CMS)
Kentico CMS for ASP.NET – Kentico CMS is powerful ASP.NET based Content Management platform to build web sites and web applications. Kentico CMS utilizes ASP.NET and Microsoft SQL Server. It is full-featured CMS with e-commerce, intranet, social networking, online marketing tools, Ajax support, Mobile websites support, Sharepoint support, Supports Visual Studio .NET and ASP.NET, Ready-to-use website templates (Corporate Site, E-commerce Site) and more.
Kentico CMS hosting requires: Windows Server 2008,.NET Framework 3.5 SP1 or 4.0 or higher, IIS 7.0, 7.5, 8.0 , Microsoft SQL Server 2005, 2008, 2008 R2, 2012. If you want to edit source, you need Visual Studio/Visual Web Developer 2008/2010/2012.
DotNetNuke (DNN)
DNN is the leading open source web content management platform. The Community Edition is open source. The functionality can be extensible through a large number of third-party modules.
MojoPortal CMS
mojoPortal is an open source, cross-platform, content management system for ASP.NET which is written in the C# programming language. MojoPortal content management system requires ASP.NET 3.5 or ASP.NET 4.0/4.5, IIS 6 or higher, any of the following 5 Databases( MSSQL/SQLExpress/SQL-CE/SQL-Azure, MySql, PostgreSQl, Firebird Sql, and SQLite). Features includes Blogs, Forums, Calendar, Google/Bing Maps, Contact Form, Newsletter, Polls, Surveys, ecommerce & more. MojoPortal is an extensible and mobile friendly.
Orchard
Orchard is a free, open source, community-focused Content Management System built on the ASP.NET MVC platform. Orchard content management system requires: Windows Server 2003 or Windows 2008 Server, ASP.NET 4 or above, IIS Express 8, 7.5 or IIS 7.x, Up to 12 GB ofhard drive space for a full Orchard installation, Full Trust mode for applications to perform better.
Umbraco
Umbraco is an open source content management system built on Microsoft’s .NET technology stack. It is simple, flexible and friendly. Umbraco content management system requires: IIS6+ (IIS 7 Preferred),SQL CE or SQL Server 2008 , ASP.NET 4, Medium-Trust/Full-Trust and ability to set file permissions to include create/read/write (or better) for the user that “owns” the Application Pool for your site.
Sitefinity CMS
Sitefinity is a web content management and collaboration platform designed to help organizations pursue their online goals. Sitefinity content management system requires: Windows Server 2003/ 2008/2008 R2/2012, 32-bit or 64-bit operating system, IIS 6+, .NET Framework 4.0 and 4.5, ASP.NET MVC 4.
ASP.NET CMS Hosting features
You need a windows hosting package that meet full requirements of CMS software
Latest versions of NET Framework 4.0 / 4.5 / 5 or above
Supported database platforms (SQL Server 2008 or above)
Currently, both HttpPlatformHandler and Asp.Net Core Kestrel host requires Reverse Forwarders package to be installed on the Nano machine. Reverse Fowarders can be installed offline (machine turned off) or online (machine running).
Offline, Reverse Forwarders can be installed by passing –ReverseForwarders parameters when calling New-NanoServerImage cmdlet.
The 1st command installs the Reverse Forwarders feature package.
The 2nd command installs the associated language pack for the package.
In this case, C:\packages is a local directory that I created where I copied the Packages folder from the Nano Server media installation location.
After installing Reverse Forwarders package (whether offline or online), verify that IIS and Reverse Forwarders are correctly installed by running ‘dism /online /get-packages’.
You should see the Feature and Language packs for Microsoft-NanoServer-IIS-Package and Microsoft-OneCore-ReverseForwarders-Package.
Installing HttpPlatformHandler
At this time, the install for HttpPlatformHandler on Nano is manual.
Nano is 64 bit only (no WOW), so you’ll need to install the latest x64 version of HttpPlatformHandler (http://www.iis.net/downloads/microsoft/httpplatformhandler) on a regular (not Nano) machine.
Once you have x64 bit version of HttpPlatformHandler installed on your regular (not Nano) machine, there are 2 files which we’ll need to copy to the Nano machine:
You can execute the steps below in a remote PowerShell session to the Nano machine.
Note that the below steps works on a clean system, but is not meant to be idempotent. If you run this multiple times it will add multiple entries and you will run into problems! If you end up in a bad state, you can find backups of the applicationHost.config file at %systemdrive%\inetpub\history.
You can skip this section if you already did the PowerShell steps above.
I recommend following the PowerShell steps, although if you absolutely must edit the IIS applicationHost.config file to enable HttpPlatformHandler then these are the steps.
Open up c:\windows\system32\inetsrv\applicationHost.config
(if you are using Powershell ISE v5 you can do this using ‘psedit c:\windows\system32\inetsrv\applicationHost.config’)
Under <configSections> add
<configSections>
<section name="appSettings" />
In system.webServer section, unlock handlers from Deny to Allow
First, make sure that your Asp.Net Core application is built targeting coreclr and x64.
This is very important as any other combination will not work on Nano.
After building for coreclr/x64 you will need to copy the whole application to the Nano machine – in this example I’m using c:\HelloAspNetCore.
Next I will setup a new Site pointing to c:\HelloAspNetCore\wwwroot using port 8000 (for simplicity we will go with Default App Pool)
There are no problems running the Asp.Net Core site on default port 80, though in a testing environment I like to separate the Asp.Net Core app from the default website, so that it’s easier to troubleshoot when something goes wrong (e.g. so you can verify that the default IIS site still works fine).
First make sure that IIS itself is correctly installed. http://<ipaddress> should get you the default page (Blue IIS page) otherwise something very basic is not set up correctly.
Secondly, make sure that your Application can run standalone. E.g. c:\HelloAspNetCore\approot\web.cmd
Thirdly, check to make sure that you are seeing logs created by HttpPlatformHandler – e.g. c:\HelloAspNetCore\logs
3 Comments
I have followed the steps, but it doesn't work 🙁
It gets a PERMISSION DENIED; I found it in the app /logs directory (included below).
Does it need an additional ICACL somewhere? I don't know under what security context it runs...
I think I saw somewhere it could need permission for the port it runs on. If so, how do we grant permissions on that port?
Microsoft.AspNet.Server.Kestrel.Networking.UvException: Error -4092 EACCES permission denied
at Microsoft.AspNet.Server.Kestrel.Networking.Libuv.Check(Int32 statusCode)
at Microsoft.AspNet.Server.Kestrel.Networking.UvTcpHandle.Bind(ServerAddress address)
at Microsoft.AspNet.Server.Kestrel.Http.TcpListener.CreateListenSocket()
at Microsoft.AspNet.Server.Kestrel.Http.Listener.<>c__DisplayClass5_0.<StartAsync>b__0(Object _)