11

.lessdev Cassiniサーバー(ドットなし)でファイルを数週間正常に使用していますが、ローカルIISサーバーに公開すると404エラーが発生します。デバッガーをIISに接続しても、例外は発生しません。IISアプリプールとサーバーも再起動しました。

何か案は?

4

2 に答える 2

31

IISでmimeタイプが欠落しているようです。

IIS7の場合、以下を追加しますweb.config

<system.webServer>
    <staticContent>
        <mimeMap fileExtension=".less" mimeType="text/css" />
    </staticContent>
</system.webServer>

IIS6の場合、次のことができます(管理者のRDPアクセス権があることを前提としています)。

cscript adsutil.vbs set W3SVC/1/Root/MimeMap ".less, text/css"

/1/サイトのIIS番号はどこにありますか。

于 2011-05-17T01:11:26.873 に答える
8

この議論に私の2つのビットを追加するだけです(かなり遅く、私は気づきます)。

私はちょうど同じ症状に遭遇しました、そして、前述の修正は私のために働きませんでした。しかし、私これらの症状の別の理由とこれに対する解決策を見つけることになりました。

私の場合の404応答には、応答の本文に次のメッセージが含まれていました。

/*エラーが発生しました。ログを参照するか、ローカルマシンで表示します。* /

これは、実際に少ないファイルが見つかり、リクエストがdotLessによって処理されていたことを示しているようです(メッセージはdotLessのソースコードにあります)が、リクエストの処理中にFileNotFoundExceptionが発生しました。

問題を追跡して、開発サーバーの下に存在していても、IISサーバーに不思議なことに存在しない.lessファイルを参照する@importステートメントを見つけました。

この問題のある.lessファイルのビルドアクションは、私のプロジェクトの他のすべての.lessファイルのように、コンテンツではなく、なしに設定されていることがわかりました。

では、次の論理的な質問は、いったいなぜビルドアクションが正しくなかったのかということでした。

さて、私はファイルを.cssファイルとして追加し、それを.lessファイルにインポートすることにしました。そのため、名前を.lessに変更しました(.cssは.lessのサブセットですが、lessはcssファイルをインポートしないため)。新しい.cssファイルを使用してこのプロセスを繰り返したところ、問題が再現可能であることがわかりました。

Visual Studioは、.cssの名前を.lessに変更することによる予期しない副作用として、ビルドアクションを舞台裏でContentからNoneに変更しているようです。したがって、名前が変更された.lessファイルはIISサーバーに公開されません。

于 2013-08-22T19:10:08.597 に答える