2012-03-15 53 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 

,它再次工作。我花了一段时间才发现这一点,因为我从来没有在路径中使用点...