2012-04-03 51 views
19

Tôi đã xem xét các câu hỏi tương tự trên SO, nhưng không có gì hoàn toàn phù hợp với vấn đề của tôi như xa như tôi có thể nói.Không thể tải tập tin hoặc lắp ráp CrystalDecisions.ReportAppServer.ClientDoc

Thông điệp ngoại lệ:

Không thể tải tập tin hoặc lắp ráp 'CrystalDecisions.ReportAppServer.ClientDoc, Version = 13.0.2000.0, Văn hóa = trung tính, PublicKeyToken = 692fbea5521e1304' hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định.

Tệp có trong GAC của tôi. Tôi đang phát triển trên một máy 32 bit (Windows 7) chạy VS2010, mọi thứ đều là .NET4. Máy chủ lưu trữ đích là 64-bit Win 2008 R2. Máy cục bộ của tôi có cài đặt CR cho VS2010; máy lưu trữ có thời gian chạy 64 bit cho VS2010. Tôi đang biên dịch tất cả mã của tôi trong chế độ "CPU bất kỳ" cho ứng dụng web này.

Điều khiến tôi không thể tìm thấy tệp trong GAC. Đây là một ứng dụng IIS; có một số loại vấn đề quyền? Tôi nghĩ IIS sẽ có quyền truy cập vào GAC.

Một số đề xuất về việc cần làm sẽ được đánh giá cao.

+0

Trong một số dll bên thứ ba mà tôi đã làm việc, PublicKeyToken khác với phiên bản 32 bit và 64 bit. Nếu nó hoạt động trên một máy, nhưng không phải máy khác, đây có thể là nơi để xem xét. nó chỉ là một đoán, mặc dù ... – David

+0

Vâng các tập tin với mã thông báo khóa công khai tồn tại trong GAC, chính xác như mô tả. Tôi không hiểu tại sao ứng dụng web của tôi không thể tìm thấy nó. –

Trả lời

14

Hóa ra câu trả lời vô cùng đơn giản, nhưng bí ẩn là tại sao nó lại cần thiết.

Trong trình quản lý IIS trên máy chủ, tôi đặt nhóm ứng dụng cho ứng dụng web của mình không cho phép các hội đồng 32 bit.

Dường như nó giả định, trên hệ thống 64 bit, bạn phải muốn lắp ráp 32 bit. Kỳ lạ.

+0

Hoặc cách khác: C: \ inetpub \ AdminScripts \ adsutil.vbs Đặt w3svc/AppPools/Enable32bitAppOnWin64 0 – ariscris

+0

Trường hợp của tôi là một Ứng dụng WPF. Đã phải tắt tùy chọn "Tùy chọn 32 bit" trong tùy chọn của Dự án. – RonaldPaguay

3

1) Thay đổi hồ sơ .net của bạn từ hồ sơ khách hàng để cho .Net Framework 4,0 http://msdn.microsoft.com/en-us/library/bb398202.aspx

2) Kiểm tra các loại Nhúng Interop của bạn cờ

Embed Interop Types flag http://weblogs.asp.net/cazzu/archive/2011/03/11/check-your-embed-interop-types-flag-when-doing-visual-studio-extensibility-work.aspx

+0

Tất cả các dự án của tôi đều sử dụng cấu hình 4.0; Tôi đã không bao giờ có nhiều thành công với hồ sơ khách hàng (dunno lý do tại sao đó là một mặc định cho bất kỳ dự án). Tôi sẽ kiểm tra cài đặt Interop sáng mai. –

+0

Tất cả các tài liệu tham khảo của tôi đã được thiết lập để không nhúng các loại Interop. –

+0

ah xin lỗi giá trị thử –

2

Về hệ thống 64 bit muốn hỗ trợ 32 bit. Tôi không thấy nó kỳ quái như vậy:

Mặc dù được triển khai tới hệ thống 64 bit, điều này không có nghĩa là tất cả các hội đồng tham chiếu đều nhất thiết là các bản sao Crystal Reports 64 bit. Hơn nữa, các tập hợp Crystal Reports phần lớn chỉ là các trình bao bọc cho một tập hợp các DLL kế thừa mà chúng dựa vào. Nhiều DLL 32 bit được yêu cầu bởi assembly được tham chiếu chủ yếu. Các thông báo lỗi "không thể tải lắp ráp" liên quan đến các DLL là tốt. Để xem trực quan những gì đang có, hãy truy cập www.dependencywalker.com và chạy 'Depends' trên assembly trong câu hỏi, trực tiếp trên máy chủ IIS đó.

2

Bạn chỉ cần cài đặt Crystal Report Report Run Time lượt tải xuống trên Máy chủ triển khai. Nếu sự cố vẫn xuất hiện, thì hãy đặt thư mục asp_client kiểm tra trong thư mục chính của dự án của bạn.

+0

Nó sẽ hoạt động mà không cần phải cài đặt thời gian chạy. Giải pháp khi chạy trang web của bạn trên máy chủ đám mây là gì và bạn không có quyền truy cập vào máy tính để bàn? Điều gì về thử nghiệm đơn vị? –

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