2011-12-12 7 views
11

Tôi không thể tải tệp kịch bản trên trang web của mình. Mọi thứ khác hoạt động tốt. Tuy nhiên, tôi chưa thử ScriptResource.axd.WebResource.axd không tìm thấy

Tôi đã xác minh vấn đề này tồn tại trên cả cassini và IIS7.

Tôi đã xác minh trang web 64 bit 4.0.config của tôi chứa ánh xạ cho WebResource.axd.

Thời gian hệ thống của tôi là chính xác (tôi nghe nói có thể có vấn đề với điều đó).

Tôi đã xác minh rằng nó hoạt động trong các dự án khác, vì vậy thủ phạm phải là ứng dụng web của tôi.

Ứng dụng web của tôi là ứng dụng web 4.0 MVC3.

Có thể tìm thấy web.config của tôi here.

Lỗi này đang giết chết tôi! Bất kỳ trợ giúp sẽ được đánh giá cao!

Resource not found

Trả lời

5

file web.config của bạn là tuyệt vời (nó không phải là một lời khen): trong .NET Framework 4.0, nó phải là ngắn hơn nhiều/nhẹ hơn.
Tôi nghĩ rằng xử lý của bạn được khai báo trong phần sai:

<system.webServer> 
    <handlers> 
     <add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" /> 
    </handlers> 
</system.webServer> 

Thông thường, xử lý WebResource.axd được khai báo trong "system.web" phần:

<system.web> 
    <httpHandlers> 
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" /> 
    </httpHandlers> 
</system.web> 
+0

tôi đã cho họ ở cả hai nơi cùng một lúc với vô ích. Tôi thậm chí không cần họ mặc dù, xem như thế nào họ đã có trong machine.config của tôi (web.config). –

+2

Bạn nói đúng: tuyên bố này thường không cần thiết. Vì bạn đang sử dụng MVC, bạn có kiểm tra xem định tuyến không xung đột với đường dẫn WebResource.axd không? Tôi không sử dụng MVC nhưng tôi biết rằng định tuyến đôi khi có thể rất phức tạp và dẫn đến hành vi bất ngờ. – CedX

+0

Nó có mục nhập Bỏ qua .axd. –

4

tôi giải quyết một vấn đề tương tự bằng cách thêm quyền đọc cho mọi người vào thư mục nơi lắp ráp chứa tài nguyên được nhúng. Rõ ràng mọi người đều quá mức cần thiết, nhưng điều đó có thể giúp những người khác nghiên cứu các vấn đề tương tự.

Trong trường hợp của chúng tôi, một số tài nguyên được tải (vì vậy tôi biết AssemblyResourceLoader đang hoạt động) và nó hoạt động trên một máy nhưng không hoạt động trên một máy khác.

This answer cho một câu hỏi khác đã giúp tôi xác định xem hội đồng nào không hoạt động.

3

tôi giải quyết vấn đề này trên một máy sản xuất chạy lại aspnet_regiis:

%WINDIR%\Microsoft .NET\Framework\4.xxxx\aspnet_regiis -i 

Có lẽ quá trình cài đặt chuẩn của khuôn khổ 4 đã đi sai.

3

Bit muộn nhưng có thể giúp đỡ một người nào đó trong tương lai ...

tôi thấy rằng điều này có thể xảy ra nếu các DLL của ứng dụng web bạn đang phân phối là mới hơn so với thời gian ngày hiện tại. Ví dụ, bạn đặt ứng dụng web của bạn trên máy chủ sản xuất nơi thời gian máy chủ cũ hơn trên máy phát triển của bạn.

Lấy thời gian máy chủ đồng bộ với máy dev đã làm các trick cho tôi ...

0

Tôi có vấn đề .axd này với Umbraco trên máy chủ sản xuất, nó chở tôi điên cho đến khi tôi phát hiện ra rằng các máy chủ có bảo mật khác nhau và theo Yêu cầu lọc, các phần mở rộng .axd và.asmx không được liệt kê trong tên tệp Được phép theo mặc định và công ty lưu trữ có cài đặt Cho phép tiện ích mở rộng tên tệp không công khai bị tắt, khác với máy phát triển của tôi.

4

Tuyệt đối giải pháp là: http://www.4guysfromrolla.com/articles/080906-1.aspx khi bạn kiểm tra mã net framework: https://github.com/Microsoft/referencesource/blob/master/System.Web/Handlers/AssemblyResourceLoader.cs bạn sẽ nhìn thấy lừa: tại dòng 606

WebResourceAttribute wra = FindWebResourceAttribute(assembly, resourceName); 

nếu lắp ráp không có WebResourceAttribute nó throws lỗi 404. Bạn có thể nhìn thấy ở dòng này

if (resourceStream == null) { 
      if (resourceIdentifierPresent) { 
       LogWebResourceFailure(decryptedData, exception); 
      } 
      throw new HttpException(404, SR.GetString(SR.AssemblyResourceLoader_InvalidRequest)); 
     } 

để thêm WebResourceAttribute để AssemblyInfo.cs bạn nộp như thế này:

[assembly: WebResource("FullNameSpace.SampleResourceFile.js", "text/javascript")]