2012-11-24 13 views
9

Trong khi sử dụng Windows Azure Table lưu trữ trong WCFService WebRole, đã cố gắng để tạo ra CloudStorageAccount bằng cách sau:Không thể tạo Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener

storageAccount = 
CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("[Setting name]")) 

Nhận ngoại lệ:

ConfigurationErrorsException " Không thể tạo Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Phiên bản = 1.0.0.0, Văn hóa = trung lập, PublicKeyToken = 31bf3856ad364e35. "

Trợ giúp MSDN nói rằng 1) Visual Studio phải được chạy với tư cách quản trị viên. 2) Một vai trò phải chạy dưới sự tin cậy đầy đủ (thay đổi tùy chọn mức độ tin cậy .NET thành Full Trust).

Tất cả đã xong, nhưng tôi vẫn có cùng ngoại lệ.

Trả lời

20

Một điều có thể gây ra lỗi này đang chạy chính vai trò web, thay vì chạy dự án đám mây có chứa. Nếu đây là vấn đề, bạn có thể khắc phục nó bằng cách đảm bảo rằng dự án đám mây được đặt làm dự án khởi động để gỡ lỗi và không phải là vai trò web.

Có thể, và đôi khi hữu ích, để chạy dự án ASP.NET tự xác định vai trò web. Điều này có thể nhanh hơn rất nhiều so với chạy những thứ trong Trình giả lập tính toán Azure. Nó cũng có thể cho phép bạn phát triển dự án của bạn mà không cần phải chạy VS cao. Ngoài ra, tôi đã tìm thấy rằng trình mô phỏng có xu hướng gây ra Visual Studio để báo cáo một lỗi truy cập bộ nhớ không hợp lệ theo thời gian, tại thời điểm đó bạn cần phải khởi động lại VS. Việc chạy vai trò web trực tiếp tránh được tất cả các vấn đề này.

Tuy nhiên, có một số điều có thể ngăn việc này hoạt động và ngoại lệ bạn mô tả là một triệu chứng của một trong những vấn đề này. Nếu vai trò web của bạn là Web.config bao gồm cấu hình cho Azure DiagnosticMonitorTraceListener (và Visual Studio thêm rằng theo mặc định khi bạn tạo vai trò web) thì điều đầu tiên cố gắng tạo đầu ra theo dõi sẽ gặp sự cố với lỗi bạn mô tả nếu bạn chạy bên ngoài trình mô phỏng. Và khi điều đó xảy ra, việc truy xuất cài đặt từ CloudConfigurationManager sẽ xuất hiện để thực hiện việc này.

Điều này không khác biệt với cách CloudConfigurationManager. Tất cả những gì nó đang làm là tạo ra một số đầu ra dấu vết. VS cấu hình các vai trò web để gửi tất cả đầu ra dấu vết đến trình lắng nghe chẩn đoán Azure và vì trình lắng nghe đó chỉ có thể chạy trong trình mô phỏng tính toán hoặc thực thể Azure thực, điều đầu tiên cố gắng tạo đầu ra dấu vết sẽ bị lỗi. CloudConfigurationManager là một ứng cử viên phổ biến bởi vì nó xảy ra để sản xuất đầu ra dấu vết, và nó thường được sử dụng sớm khi một vai trò khởi động. Nhưng về nguyên tắc, bất cứ thứ gì tạo ra đầu ra dấu vết đều có thể đạt được ngoại lệ này.

Cách đơn giản để tránh điều này là xóa phần có liên quan ra khỏi tệp cấu hình. Khi bạn tạo một vai trò web mới, Visual Studio thêm một phần <system.diagnostics> cấu hình đầu ra theo dõi mặc định để đi đến trình lắng nghe chẩn đoán Azure. Bạn chỉ có thể nhận xét điều đó. Điều đó sẽ cho phép bạn gỡ lỗi vai trò web trực tiếp trong Visual Studio mà không cần sử dụng trình mô phỏng tính toán (giả sử bạn không làm bất cứ điều gì khác phụ thuộc vào môi trường vai trò).

Tất nhiên, vấn đề với điều đó là bạn sẽ không còn nhận được bất kỳ dấu vết chẩn đoán nào khi chạy trong Azure. Một cách để giải quyết đó là di chuyển cấu hình có liên quan đến tệp Web.config.Release (thêm thuộc tính xdt: cần thiết).

Thay đổi này cũng sẽ ngừng trình theo dõi chẩn đoán Azure chạy khi bạn sử dụng trình mô phỏng tính toán cục bộ. (Đó là một vấn đề nhỏ hơn, bởi vì các thông điệp dấu vết vẫn sẽ xuất hiện trong trình gỡ rối. Nó chỉ có nghĩa là bạn sẽ không nhận được các bản sao liên tục của các dấu vết được sao chép vào bộ nhớ bảng như khi bạn chạy thực.) dường như sẽ thực hiện một sửa đổi tương tự cho Web.config.Debug (hoặc để chạy bản phát hành xây dựng trong trình mô phỏng), nhưng có một dự án đám mây: dường như không áp dụng các biến đổi tệp cấu hình khi đóng gói cho trình mô phỏng theo mặc định. May mắn thay, bạn có thể sửa lỗi này: http://blog.hill-it.be/2011/03/07/no-web-config-transformation-in-local-azure/ cho biết cách bật phép biến đổi để gỡ lỗi cục bộ trong trình mô phỏng tính toán. (Transforms không bao giờ được áp dụng khi gỡ lỗi một dự án ASP.NET trực tiếp từ bên trong VS, bằng cách này.)

+0

Tôi đã gặp vấn đề này khi nâng cấp Azure SDK của tôi từ v2.0 đến v2.1. Nó tự động thay đổi dự án khởi động của tôi từ dự án đám mây sang dự án vai trò web mà không nói cho tôi biết. Thay đổi nó trở lại cố định vấn đề. – Bern

0

tôi đã tìm thấy rằng lỗi này là do phiên bản sai trong web.config của bạn

Ie. , bạn có thể không có Version=1.0.0.0

Microsoft.WindowsAzure.Diagnostics tùy thuộc vào phiên bản 1.8.0.0 như của bây giờ

thử cập nhật lên phiên bản hiện tại

0

Remove t ông dòng trong Web.config < thêm loại = "Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener

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