2012-03-15 91 views
6

我在Razor視圖以下爲我的果園模塊的編輯模板:烏節CMS:JavaScript文件返回404未找到,即使它存在

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

我認爲/ Scripts/vs./scripts /的大小寫不是問題嗎? – AlexMA 2012-03-15 13:18:56

+0

嗨@Alex,嘗試它與兩個:( – greg84 2012-03-15 13:21:21

+1

你有你的腳本文件夾中的web.config具有正確的權限? – forsvarir 2012-03-15 14:14:44

回答

8

默認情況下,Orchard設置爲限制文件夾權限。這通常是通過根據需要爲每個文件夾添加一個web.config(在這種情況下,您的腳本文件夾)來重寫。

如果您使用codegen模塊來生成您的模塊,那麼這是您生成的一部分。如果不是,那麼你需要自己添加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

謝謝 - 作品現在:)我最初使用代碼gen工具創建了該模塊,但刪除了腳本文件夾。當我重新創建時,顯然配置文件已經消失。衛生署! – greg84 2012-03-15 14:40:26

2

我發現其他原因404,我想提一提。 UrlScan的默認拒絕一個點的路徑,我發現這個在我的日誌: 拒絕URL +包含+點+中+路徑

因此更改設置:

AllowDotInPath=1 

,它再次工作。我花了一段時間才發現這一點,因爲我從來沒有在路徑中使用點...