Dotless File Yields 404 Error in IIS

2019-03-25 07:22发布

问题:

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?

回答1:

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.



回答2:

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.



标签: iis dotless