2012-03-15 35 views
6

Tôi có sau đây theo quan điểm của Razor của tôi cho một mẫu biên tập mô-đun Orchard của tôi:Orchard CMS: tập tin javascript trả về 404 không tìm thấy mặc dù nó tồn tại

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

Khi trang web được trả lại tôi có thể thấy dòng này ở dưới cùng:

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

Đẹp! Chỉ có vấn đề là, khi tôi truy cập đường dẫn đó, tôi gặp lỗi 404. Tập lệnh không tồn tại.

... nhưng có! Nó được lưu dưới dạng Orchard.Web\Modules\MyModuleName\Scripts\assets.js

Chức năng còn lại của mô-đun của tôi hoạt động tốt - Tôi có thể bật và sử dụng nó, nó sẽ không tìm thấy tệp tập lệnh. Tôi có thiếu thứ gì đó hiển nhiên ở đây không ?!

+0

Tôi giả sử viết hoa của/Scripts/vs./scripts/không phải là vấn đề? – AlexMA

+0

Xin chào @Alex, đã thử với cả hai: ( – greg84

+1

Bạn có web.config trong thư mục tập lệnh của bạn với quyền thích hợp không? – forsvarir

Trả lời

8

Theo mặc định, Orchard được thiết lập để hạn chế quyền truy cập thư mục. Điều này thường được overriden bằng cách thêm một web.config vào mỗi thư mục theo yêu cầu (trong trường hợp này, thư mục script của bạn).

Nếu bạn sử dụng mô-đun codegen để tạo mô-đun, thì điều này được thực hiện cho bạn như một phần của thế hệ. Nếu không, thì bạn cần tự thêm web.config.

Các web.config codegenned trông như thế này:

<?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

Cảm ơn - công trình Bây giờ :) Ban đầu tôi đã tạo mô-đun bằng công cụ gen mã nhưng đã xóa thư mục tập lệnh. Khi tôi tạo lại nó rõ ràng là tập tin cấu hình đã biến mất. Doh! – greg84

2

Tôi tìm thấy một lý do nào khác cho 404 này mà tôi muốn đề cập đến. UrlScan theo mặc định từ chối một dấu chấm trong con đường, tôi thấy điều này trong nhật ký của tôi: URL bị từ chối + chứa + chấm + trong + đường

Vì vậy, thay đổi các thiết lập trong:

AllowDotInPath=1 

và nó hoạt động trở lại. Tôi mất một thời gian để tìm thấy điều này, bởi vì tôi không bao giờ sử dụng dấu chấm trong đường dẫn ...

Các vấn đề liên quan