2012-03-15 16 views
6

が存在するにもかかわらず、私は私のオーチャード・モジュール内のエディタテンプレートのための私のかみそりビューで、次のしているが見つからない404を返しJavascriptのファイル:ページがレンダリングされるとオーチャードCMS:それは

Script.Include("assets.js").AtFoot(); 

私はこの行を見ることができます下部:

<script src="/Modules/MyModuleName/scripts/assets.js" type="text/javascript"></script> 

美しい!唯一の問題は、私がそのパスにアクセスしたときに404エラーが発生することです。スクリプトは存在しません。

...しかし、それはありません!私のモジュールの機能の残りの部分は正常に動作Orchard.Web\Modules\MyModuleName\Scripts\assets.js

として保存されます - 私は有効にして、それを使用することができ、それだけでスクリプトファイルを見つけることができません。私はここで何かを見逃していますか?デフォルトでは

+0

...、私はこれを見つけるには時間がかかりましたか? ?! – AlexMA

+0

こんにちは@Alexは、答え:) – greg84

+1

でそれを試してみました - 作品今:)私はもともとコードgenツールを使用してモジュールを作成したが、スクリプトフォルダを削除した。私がそれを再現した時、明らかに設定ファイルは消えてしまった。ドー! – forsvarir

答えて

8

、オーチャードは、フォルダのアクセス許可を制限するように設定されています。これは通常、必要に応じて各フォルダにweb.configを追加することでオーバーライドされます(この場合はscriptsフォルダ)。

あなたのモジュールを生成するコード生成モジュールを使用する場合、これは世代の一環として、あなたのために行われます。そうでない場合は、web.configを自分で追加する必要があります。

codegenned web.configファイルは次のようになります。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    </appSettings> 
    <system.web> 
    <httpHandlers> 
     <!-- iis6 - for any request in this location, return via managed static file handler --> 
     <add path="*" verb="*" type="System.Web.StaticFileHandler" /> 
    </httpHandlers> 
    </system.web> 
    <system.webServer> 
    <staticContent> 
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" /> 
    </staticContent> 

    <handlers accessPolicy="Script,Read"> 
     <!-- 
     iis7 - for any request to a file exists on disk, return it via native http module. 
     accessPolicy 'Script' is to allow for a managed 404 page. 
     --> 
     <add name="StaticFile" path="*" verb="*" modules="StaticFileModule" preCondition="integratedMode" resourceType="File" requireAccess="Read" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+1

感謝のために必要な権限を持つフォルダあなたのための – greg84

2

私が言及したいと思い、この404のための他の理由を発見しました。デフォルトでURLScanは私は私のログにこれを見つけ、パスでドットを拒否: 拒否されたURL +は+ドットが含まれています+ +パスで

だからの設定変更:

AllowDotInPath=1 

をし、それが再び動作します。私はパスでドットを使用したことがないので、それは私が/スクリプト/対/スクリプトの総額は/問題ではないと仮定し

関連する問題