I've been successfully using .less
files in my dev Cassini server (with dotless) for a few weeks but when I publish to my local IIS server they yield 404 errors. Attaching my debugger to IIS yields no exceptions. I've restarted my IIS app pool and server as well.
Any ideas?
Go to IIS logs and check if there is a sub-status code for the 404 error. Go to Request Filtering in IIS Manager to make sure there is no rule affecting ASP.NET pages. Check if the other websites hosted in IIS work. Create a new website and application pool to try accessing your ASP.NET pages.
To resolve this problem, use one of the following methods: Make sure that the requested resource is at the location that the URL points to. Review the URL that you open in the Web browser. Make sure that no custom filters or modules restrict access to the file that you want to browse.
The error is also known as “404 Page Not Found”. It indicates that the page you are looking for cannot be found. Usually it will mean that the page is deleted or has been moved. It can mean that the link is broken or that it does not lead to a valid website or page.
Looks like you're missing a mime type on IIS.
For IIS7 add the following to your web.config
:
<system.webServer>
<staticContent>
<mimeMap fileExtension=".less" mimeType="text/css" />
</staticContent>
</system.webServer>
For IIS6 you can do (presuming you have administrator RDP access):
cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".less, text/css"
Where /1/
is the IIS number of the site.
Just adding (quite late, I realize) my two bits to this discussion.
I just ran into the same symptoms and the previously mentioned fix did not work for me. I did however end up finding another reason for these symptoms and a solution for this.
The 404 response in my case contained the following message in the body of the response:
/* Error Occurred. Consult log or view on local machine. */
This seems to be an indicator that the less file was indeed found and the request was being processed by dotLess (the message can be found in dotLess's source code), but a FileNotFoundException occurred during processing the request.
I tracked down the problem to an @import statement that referred to a .less file that was mysteriously not present on the IIS server, even though it was present under the development server.
It turned out that the build action for this problematic .less file was set to None, not to Content, like all the other .less files in my project.
So the next logical question was why on earth was the Build Action incorrect?
Well, I had added the file as a .css file, then decided to import it into a .less file and thus renamed it to .less (since .css is a subset of .less, but less does not import css files). I repeated the process with a new .css file and found that the problem was reproducable.
It seems that Visual Studio changes the build action from Content to None behind the scenes as an unexpected side-effect of renaming .css to .less. Thus the renamed .less file does not get published to the IIS server.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With