Issues with File extensions on IIS 7
PROBLEM DESCRIPTION:
We were trying to run a windows application which is getting invoked from a link in the ASP.NET 3.5 web application. The windows application was supposed to get invoked on the client machine. The web app is hosted on the IIS web server (Win 2008). However the client executable failed to run.
The same application hosted on Windows XP and Windows 2003 was running fine.
FINDINGS:
I noticed that not all files were getting downloaded on the client machine under Temporary Internet Files. After researching I figured out that they were the files with extensions .dll, .exe, and .exe.config. However these files were getting downloaded when the same app is hosted on IIS 6.
SOLUTION:
I worked on a sample application provided by the customer and found that the file extension was denied while we invoked the windows application. This issue is documented in the following article:
Error message when you try to browse a Web page that is hosted on IIS 7.0: "HTTP Error 404.7 - FILE_EXTENSION_DENIED"
https://support.microsoft.com/kb/942045
To resolve this issue we need to follow these two steps:
1. Disable "Execute" permissions in the "Edit Feature Permissions" for the handler mappings.
Ref: https://blogs.iis.net/davcox/archive/2008/09/05/where-is-execute-permission-in-the-ui.aspx
2. Add the following file extensions under the requestFiltering section of the application.config file.
<add fileExtension=".exe" allowed="true" />
<add fileExtension=".config" allowed="true" />
<add fileExtension=".exe.config" allowed="true" />
<add fileExtension=".dll" allowed="true" />
This will allow you to download the necessary files on the Temporary Internet Files folder.