2009-04-08 35 views
10

Tôi đang cố gắng xuất thư viện điều khiển trong một .dll cho các nhà phát triển khác trong văn phòng để tiêu thụ.WebResource.axd trống hoặc không tìm thấy

Các giải pháp tôi gốc ngoại hình tạo ra như thế này:

Giải pháp 1:
- Mri.Controls (Class Library)
- Mri.FmTool (Web Application)

Mri.FmTool tài liệu tham khảo Mri.Controls.

Bên trong Mri.Controls, tôi có một số tài nguyên Web javascript. Mri.FmTool dường như đọc WebResources tốt, tất cả các resouces web javascript của tôi xuất hiện như họ nên khi ứng dụng web Mri.FmTool đang chạy.

Vì vậy, bây giờ tôi đã cố gắng để tạo ra một giải pháp đơn giản để tiêu thụ Mri.FmTool

Giải pháp 2:
- Mri.ConsumerTest (Web Application)

Tôi đã Mri.Controls mới nhất .dll và thêm nó như là một tham chiếu đến ứng dụng Mri.ConsumerTest. Tất cả các điều khiển từ Mri.Controls dường như đang làm việc bên trong Mri.ConsumerTest. Intellisense đang làm việc, nó biên dịch, không có vấn đề gì.

Tuy nhiên, khi chạy, hầu hết các tệp WebResource.axd đều trống, chỉ để trống. Một tệp WebResource.axd không trống, nó chỉ đơn giản nói "Không tìm thấy tài nguyên này".

Dưới đây là các thuộc tính của các tập tin javascript bên trong cửa sổ Properties:
Build Hành động: "Embedded Resource"
Copy to Output Directory: "Sao chép luôn"

tôi thiếu bước gì?

+0

Cảm ơn đã đặt câu hỏi này! Tôi không có câu hỏi * cùng *, nhưng tôi đã có một vấn đề tương tự. Đã không nhận thức được rằng tài sản "Xây dựng hành động: tài nguyên nhúng" mặc dù. Cảm ơn! – Matt

Trả lời

2

Tôi nhận thấy rằng tệp CSS WebResource của tôi đang tải đúng cách, nhưng Javascript không tải trong WebResource trong giải pháp mới.

Vì vậy, thay vì sử dụng System.Web.UI. ClientScriptManager được sử dụng để đăng ký Tài nguyên Web, tôi đã chuyển sang sử dụng System.Web.UI. ScriptManager. Hiện tại, các tệp sắp ra khỏi ScriptManager.axd (thay vì WebResource.axd). Điều này dường như để khắc phục vấn đề.

Cũ Mã trước Fix:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     Page.ClientScript.RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

Đoạn mã trên sử dụng System.Web.UI.ClientScriptManager

Mã mới sau Fix:

public class ScriptManagerExtension : System.Web.UI.ScriptManager 
{ 
    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     RegisterClientScriptResource(this, typeof(ScriptManagerExtension), "Mri.Controls.Resources.Scripts.Libraries.jQuery.js"); 
    } 
} 

Mã đoạn mã trên sử dụng System.Web.UI.ScriptManager

Từ hiểu biết của tôi, ClientScriptManager đã được giới thiệu trong 2.0. Tôi tin rằng ScriptManager là cách cải tiến mới để quản lý các tập lệnh có nhiều chức năng hơn.

/nhún vai

+0

Im không chắc chắn tôi làm theo, bạn có thể gửi một nhỏ đoạn mã của những gì bạn có ý nghĩa? –

+0

đoạn mã được thêm – taco

+0

Phần có liên quan là chức năng * tĩnh *: 'ScriptManager.RegisterClientScriptResource()' - đã cho tôi một lúc trước khi tôi tìm ra điều đó. – vdboor

2

Tài nguyên có được đặt thành một phần của DLL không?

Mở giải pháp Mri.Controls & xem thuộc tính của tệp tài nguyên javascript của bạn.
Tôi nghĩ đó là nơi mà vấn đề có thể xảy ra.

+1

Tệp javascript của tôi có các thuộc tính sau trong Mri.Controls - Xây dựng Hành động: Tài nguyên Nhúng; Sao chép vào thư mục đầu ra: Sao chép luôn – taco

+1

THANx. Đây là vấn đề của tôi. Dự án hồi sinh cũ - vì lý do nào đó, tất cả các tệp tài nguyên đã được đặt lại thành Nội dung thay vì Tài nguyên được nhúng. –

3

Có thể bạn đang thiếu thuộc tính [assembly: WebResource ("YourNameSpace.YourFile.js", "text/javascript")]. WebResource.axd cần thuộc tính đó. Bạn có thể kiểm tra bài viết this KB để biết thêm thông tin về vấn đề này.

+0

Tôi đã có [assembly: WebResource ("Mri.Controls.Resources.Scripts.Core.js", "text/javascript")] trong thông tin lắp ráp của tôi .... – taco

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