October 26, 2012 08:54 by
Scott
IIS 8 gets released along with Windows Server 2012. This comes with several interesting features such as NUMA-support, WebSockets, security improvements and better web deployment tools.
An interesting improvement in IIS 8 is NUMA-aware multi-core scalability -
To take advantage of this multi-core processors, IIS can be setup to work in two different modes depending on your expected workload – run multiple worker processes in one application pool (ideally one worker for each NUMA node) or run multiple application pools in a single workload/site. There are other configurations as well which deal with responsibility for node optimization and soft or hard thread affinity. You can read more about NUMA-aware scalability in IIS and how Windows Server 2012 works with NUMA hardware in an eBook called “Introducing Windows Server 2012” (as well as some of the below features in detail).
IIS 8 also features
- Web Sockets support for ASP.NET – .NET developers can leverage System.Web.WebSockets introduced in .NET 4.5
- Throttling improvements for multi-tenant environments
- Improvements in the way SSL is handled.
There are also some other security enhancements such as
- Dynamic IP restrictions, which can not only deny connection to IPs that break certain rules, but can also be set to return a 401, 403, 404 or just terminate connection altogether without a response
- Ability to enable FTP logon restrictions (by number of tries)
The IIS team also announced Web Deploy 3.0 RTW which supports deployment to IIS 8 and comes with several features to make deployments easier for system administrators. Some of these are -
- dbDacFx Provider for Incremental Database publishing – with support for SQL Server and SQL Azure
- Ability to take an Application Offline before Deploy
- Parameterization improvements – such as ability to add/delete/replace xml elements,
- Automatic Backups
- Ability to change Authentication mode for the site
- Several PowerShell cmdlets
You can read an introduction to Web Deploy for more information about the tool.
April 23, 2012 07:43 by
Scott
HostForLIFE.eu was established to cater to an under served market in the hosting industry; web hosting for customers who want excellent service. HostForLIFE.eu – a cheap, constant uptime, excellent customer service, quality, and also reliable hosting provider in advanced Windows and ASP.NET technology. We proudly announces the availability of the SQL 2012 hosting in our entire servers environment. HostForLife customer can choose SQL 2012 when creating a database from inside HostForLife hosting control panel.
The first new option is Windows SQL Server 2012, which is available to customers from today. With the public release just last week of Microsoft’s latest version of their premier database product, HostForLife has been quick to respond with updated their shared server configurations. SQL Server 2012 Web Edition is available for the same low monthly rental price as the previous SQL 2008, as well as Express Edition, which is a basic version of Microsoft’s SQL Database product, available for free.
“We’re proud to be at the cutting edge for new technologies. With these additions, customers have the option to explore these new products in the safe environment of their own shared server. Developers and IT Managers can research the potential impact of next-generation software without risking current infrastructure. With Microsoft’s announcement of the general availability of their new SQL server, we are proud to launch SQL 2012 hosting along with a suite of SQL 2012 management tools." Said John Curtis, VP Marketing and Business Development at HostForLIFE.eu.
John added, “It’s very important to our customers that we support their current deployments; we want to make sure that our customers have their good opportunity to test this new technology."
“HostForLIFE customers can now take advantage of SQL Server 2012’s advanced BI capabilities, We’re excited to see the benefits of this release add value to the energy management and manufacturing arena. Ensuring compatibility with Microsoft’s new SQL Server 2012 demonstrates how HostForLife and Microsoft remain committed together to providing leading edge technology for the benefit of our shared customers." Said CEO of HostForLIFE.eu, Anthony Johnson.
For more information about this new product, please visit http://www.hostforlife.eu/SQL-2012-European-Hosting.aspx.
About us:
We are European Windows Hosting Provider which FOCUS in Windows Platform ONLY. We support Microsoft technology, such as the latest ASP.NET 4, ASP.NET MVC 3, SQL 2008/2008 R2, and much more.
Our number one goal is constant uptime. Our data center uses cutting edge technology, processes, and equipment. We have one of the best up time reputations in the industry.
Our second goal is providing excellent customer service. Our technical management structure is headed by professionals who have been in the industry since it's inception. We have customers from around the globe, spread across every continent. We serve the hosting needs of the business and professional, government and nonprofit, entertainment and personal use market segments.
February 14, 2012 05:50 by
Scott
January 26, 2012 05:35 by
Scott
This is the error message that sometimes you can find on IIS:
Server Error in ‘/’ Application.
Configuration Error
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: It is an error to use a section registered as allowDefinition=’MachineToApplication’ beyond application level. This error can be caused by a virtual directory not being configured as an application in IIS.
I will gonna show you how to fix this issue. What is the issue?
1. When you create an new web application using visual studio.net, it automatically creates the virtual directory and configures it as an application. However, if you manually create the virtual directory and it is not configured as an application, then you will not be able to browse the application and may get the above error. The debug information you get as mentioned above, is applicable to this scenario.
To resolve it, Right Click on the virtual directory - select properties and then click on "Create" next to the "Application" Label and the textbox. It will automatically create the "application" using the virtual directory's name. Now the application can be accessed.
2. When you have sub-directories in your application, you can have web.config file for the sub-directory. However, there are certain properties which cannot be set in the web.config of the sub-directory such as authentication, session state (you may see that the error message shows the line number where the
authentication or sessionstate is declared in the web.config of the sub-directory). The reason is, these settings cannot be overridden at the sub-directory level unless the sub-directory is also configured as an application (as mentioned in the above point).
Mostly we have the practice of adding web.config in the sub-directory if we want to protect access to the sub-directory files (say, the directory is admin and we wish to protect the admin pages from unathorized users).
But actually, this can be achieved in the web.config at the application's root level itself, by specifing the location path tags and authorization, as follows:-
<location path="Admin">
<system.web>
<authorization>
<allow roles="administrators" />
<deny users="*" />
</authorization>
</system.web>
</location>
However, if you wish to have a web.config at the sub-directory level and protect the sub-directory, you can just specify the Authorization mode as follows:-
<configuration>
<system.web>
<authorization>
<allow roles="administrators" />
<deny users="*" />
</authorization>
</system.web>
</configuration>
Thus you can protect the sub-directory from unauthorized access.
November 21, 2011 06:12 by
Scott
The cool thing to do these days is extensionless Urls, meaning there is no .aspx, .html, etc. Instead you just reference the resource by the name, which makes things like Restful interfaces and SEO better. For security reasons IIS disables this feature by default.
Recently I was working with some code where extensionless Urls were being used by the original developer. Since I typically do not work against the local IIS 7.5 installation when writing code I was stuck because I kept getting 404 responses for an oData resource. At first I did not realize the site was using IIS 7.5 as the web server, I honestly thought it was using the development server, which is the standard option when using Visual Studio to develop a web site.
Once I realized the site was actually being deployed locally I was able to trace the issue and solve it. turns out you need to turn on Http Redirection. To do this you need to go into control panel and select ‘Programs’. This will display multiple options, you need to look at the top group, “Programs and Features”. In this group select “Turn Windows features on or off”.
Now the “Windows Features” dialog is displayed. This shows a tree view containing various components, but for this we want to drill into the Internet Information Services > World Wide Web Services > Common Http Features. By checking HTTP Redirection and the OK button you will enable extensionless Urls in IIS.
Good luck and hope it helps.
June 6, 2011 07:31 by
Scott
I needed a flash response to a recent personal project demand that required PHP and MySQL. As such, I needed to start coding ASAP a flash install of both platforms was in order. Here’s a quick step-by-step guide to get PHP and MySQL running on your computer:
1. Go to the official PHP Internet Information Services Site http://php.iis.net/
2. Click the big button to install PHP using Microsoft Web Application Gallery. If you don’t have it already installed, it will be installed first.
3. Follow the onscreen instructions.
4. Go to Control Panel > Administrative Tools > Internet Information Services.
5. Open “Default Web Site”
6. Double click on “Server Components > Handler Mappings”
7. Confirm if *.php extension is now handled by PHP FastCGI.
Here are some images of the entire process:
You’re done! Add a new Application to IIS and you’re ready to go!
Now, in order to install MySQL databse onto your system, you first need to download the MySQL Community Edition, (the freely downloadable version) from the MySQL Developer downloads webpage. At the time of this writing, the current version is 5.1 and 5.4 is available as a beta version. For instance, if you have a 64bit OS, install the following: mysql-5.1.40-winx64.msi. For 32bit OS choose mysql-5.1.40-winx64.msi.
Follow the on screen instructions. When asked, select standard installation and a root password at your discretion.
When the installation is finished, goto Start –> Programs –> MySQL > MySQL Server 5.1 > MySQL Command Line Client (mysql). mysql is a simple SQL shell. It supports interactive and non-interactive use. When used interactively, query results are presented in an ASCII-table format. When used non-interactively (for example, as a filter), the result is presented in tab-separated format. The output format can be changed using command options.
Now, let’s setup our first database. We can list all currently installed databases by inputting the following command:
show databases \g
Notice the “\g” keyword. This is like the “GO” command in SQL Server. It orders the engine to execute the previous command. After the command is executed you’ll notice a database called mysql. This is a system database, and you shouldn’t mess around with it. For instance you can check all system tables in mysql database with the following command:
show tables in mysql \g
You’ll also notice a database named “test”. This is a sample database that you can use for testing purposes.
When creating your database we must assign the required user permissions for us to access it from our data client. So I’ll create a new user called JohnDoe with a custom password by inputting the following command:
create user ‘JohnDoe’ identified as ‘password’ \g
Now for the database. There’s a useful command that gives you the SQL syntax for database creation. If you execute the following:
show create database test\g
… it will show the necessary SQL syntax to create the test database. We’ll create a database called “MyDatabase”:
create database MyDatabase \g
And now, all there is to do is give Mr JohnDoe a green card on our database, by giving it full access permissions:
grant all on table MyDatabase.* to JohnDoe identified by ‘password’ \g
If all goes well, you should receive
Query OK, 0 rows affected (0,00 sec)
Later, in case you want to delete your database, this is the command:
drop database ‘MyDatabase’ \g
And that’s it. You’re all set to start working with Php and MySql.
June 3, 2011 06:48 by
Scott
This is just only brief tutorial about how to add a new site in IIS 7. If you have any problem, please let us know.
Open IIS7 Manager.
1. Right-click the Sites node, and then click Add Web Site.
2. Type a name for your Web site In the Add Web Site dialog box.
3. If you want select a different application pool or leave the current selected.
4. In the Physical path box, type the physical path of the Web site’s folder, or click the browse button to choose the folder.
5. The default value in the IP address box is All Unassigned. If you wish to specify a dedicated IP address for the Web site, type it in the IP address box.
6. Type a port number.
7. Type a host header name for the Web site in the Host Header box.
May 26, 2011 06:27 by
Scott
Here are some troubleshooting HTTP 500.19 errors in IIS 7:
Error Message #1:
HTTP Error 500.19 - Internal Server Error
Description: The requested page cannot be accessed because the related configuration data for the page is invalid.
Module: StaticCompressionModule
Notification: MapRequestHandler
Handler: StaticFile
Error Code: 0x800700c1
Requested URL: http://localhost/
Physical Path: C:\inetpub\wwwroot
Logon Method: Anonymous
Logon User: Anonymous
Reason:
The Error Code in the above error message is “0x800700c1” which when translated through ERR.EXE, is
# %1 is not a valid Win32 application.
Solution:
This error normally indicates an attempt to use EITHER
Ø 32-bit executable from a 64-bit process
OR
Ø A corrupt executable
Hence the solution is to make sure that the listed module’s bitness (32bit/64bit) matches the bitness of the application Pool.
Error Message #2:
HTTP Error 500.19 - Internal Server Error
Description: The requested page cannot be accessed because the related configuration data for the page is invalid in the metabase on the Web server.
Error Code: 0x800700b7
Notification: BeginRequest
Module: IIS Web Core
Requested URL: http://localhost/
Physical Path: C:\inetpub\wwwroot
Logon User: Anonymous
Logon Method: Anonymous
Handler: StaticFile
Config Error: Cannot add duplicate collection entry of type 'add' with unique key attribute 'name' set to 'header’
Config File: \\?\C:\inetpub\wwwroot\web.config
Config Source:
21: <customHeaders>
22: <add name="header" value="text/plain" />
23: </customHeaders>
Reason:
This problem essentially happens if there is a duplicate entry for the configuration section setting at a higher level in the configuration (i.e. in parent site/folder’s web.config or applicationHost.config file). The error message itself points out the location of duplicate entries.
Solution:
One should look in the site’s config file and compare it with applicationHost or web.config file at a higher level to check for duplicate entries as pointed by the error message. You can either remove this entry to make the server run again, or make the entry non-duplicate by changing the collection key.
For example, the above error message was because of the same custom header defined at the IIS root level (applicationHost.config) and at the Default Website (web.config). To solve this, we can
1. Remove this entry from web.config file : <add name="header" value="text/plain" />
OR
2. Add remove OR clear element before this add element:
<remove name="header"/>
OR
<clear />
Error Message #3:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Module: IIS Web Core
Notification: BeginRequest
Handler: Not yet determined
Error Code: 0x8007000d
Config Error: Configuration file is not well-formed XML
Config File: \\?\ C:\inetpub\wwwroot \web.config
Requested URL: http://localhost/
Physical Path: C:\inetpub\wwwroot
Logon User: Not yet determined
Logon Method: Not yet determined
Config Source
3: <system.webServer>
4: </handlers>
5: <remove name="StaticFile"/>
Reason:
That error message goes on to say what exactly is bad about your configuration file, hence you should refer the “Config Error” and “Config Source” sections. This problem occurs because the ApplicationHost.config file or the Web.config file contains a malformed or unsupported XML element.
Solution:
Delete the malformed XML element from the ApplicationHost.config file or from the Web.config file as indicated by the error message.
There are couples of instances that we have come across where the error code remains 0x8007000d, but the cause of issue was interesting.
In one scenario, we had a virtual directory pointing to a UNC share content. This same above 500.19 error was caused because of wrong password specified in the “Connect as..” setting. So make sure to provide the right credentials under “Connect as..” .
Another instance where the error code remained “0x8007000d” but the “Config Error” didn’t complain the mal formed XML, rather was about Configuration section encryption.
HTTP Error 500.19 – Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Module : ConfigurationValidationModule
Notification: BeginRequest
Handler : PageHandlerFactory-Integrated
Error Code: 0x8007000d
Config Error: Configuration section encryption is not supported
Config File: \\?\C:\inetpub\wwwroot\aspnet\web.config
Requested URL: http://localhost/
Physical Path: C:\inetpub\wwwroot
Logon User: Not yet determined
Logon Method: Not yet determined
<identity configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type=http://www.w3.org/2001/04/xmlenc#Element
As the error suggests, the error is because IIS7 configuration system only supports per-attribute encryption; it does not support per-section encryption.
Error Message #4:
HTTP 500.19 - Internal Server Error
Module: IIS Web Core
Notification: BeginRequest
Handler: Not yet determined
Error Code: 0x8007010b
Config Error: Cannot read configuration file
Config File \\?\C:\inetpub\wwwroot\aspnet\web.config
Logon Method: Not yet determined
Reason:
ERROR CODE: 0x8007010b translates to “ERROR_DIRECTORY - The directory name is invalid.”
Solution:
As the error indicates, IIS is not able to find the content directory. For this error, we can run Process Monitor OR use Failed Request Tracing to get the Directory name where it fails. And then verify if that directory name/path is valid or not. If it does exist, then verify the NTFS permissions on that directory for account that is being used to access it.
We have seen this error when the site content is pointing to some Non-NTFS File system. In such cases, it is advisable to test it by placing the content on a Windows/NTFS share.