2012-09-18 17 views
12

Tôi có đoạn mã sau tạo một không gian chạy PowerShell với snap 2010 được nạp.Không thể tải trình cắm thêm quyền hạn của Exchange: Trình khởi tạo kiểu cho 'Microsoft.Exchange.Data.Directory.Globals' đã ném một ngoại lệ

Dim runspaceConfig = RunspaceConfiguration.Create() 

Dim snapInException As PSSnapInException = Nothing 
runspaceConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010", snapInException) 

Dim runspace = RunspaceFactory.CreateRunspace(runspaceConfig) 
runspace.Open() 

Kể từ khi cài đặt Visual Studio 2012, tôi bắt đầu nhận được lỗi sau khi thực hiện dòng bổ sung cấu hình cho cấu hình không gian chạy.

System.Management.Automation.Runspaces.PSSnapInException occurred 
    HResult=-2146233087 
    Message=Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception. 
    Source=System.Management.Automation 
    WasThrownFromThrowStatement=False 
    StackTrace: 
     at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadCustomPSSnapIn(PSSnapInInfo mshsnapinInfo) 
     at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo) 
     at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.LoadPSSnapIn(PSSnapInInfo mshsnapinInfo, PSSnapInException& warning) 
     at System.Management.Automation.Runspaces.RunspaceConfigForSingleShell.DoAddPSSnapIn(String name, PSSnapInException& warning) 
     at System.Management.Automation.Runspaces.RunspaceConfiguration.AddPSSnapIn(String name, PSSnapInException& warning) 

Tôi đã có thể xác nhận rằng nlog bằng cách nào đó đang gây ra sự cố này. Sự kết hợp của việc tạo ra một logger nlog trước khi tạo ra các kết quả chạy trên powerhell trong lỗi.

Nếu tôi xóa phần cấu hình nlog khỏi cấu hình ứng dụng của mình và chỉ cần tạo một trình ghi nhật ký trống rỗng thì snap-in được tải không có lỗi. Ngoài ra, nếu tôi để cấu hình nlog hiển thị trong cấu hình ứng dụng của tôi nhưng không tạo một trình ghi nhật ký, snap-in cũng được tải thành công.

  • Tôi đã thử xây dựng dự án ở cả x64 và x86.
  • Tôi đã cài đặt lại các công cụ quản lý trao đổi.
  • Tôi đã thử nghiệm trên một máy khác trong môi trường trao đổi.

Nếu bất cứ ai có thể cung cấp bất kỳ đề xuất nào có thể giúp tôi giải quyết vấn đề này, tôi sẽ rất tuyệt vời.

Cảm ơn bạn

Trả lời

5

Sau khi điều tra thêm tôi đã tìm ra rằng NET 4.5 là một trong nơi cập nhật có nghĩa là .NET 4.0 được ghi đè và thay thế bằng .NET 4.5 khi cài đặt. Tôi không biết điều gì đã thay đổi trong .NET 4.5 gây ra vấn đề này nhưng vấn đề được giải quyết bằng cách gỡ cài đặt .NET 4.5 và chuyển về Visual Studio 2010. Hy vọng Microsoft sẽ có một số cập nhật trong tương lai gần sẽ giải quyết vấn đề và cho phép tôi để sử dụng lại Visual Studio 2012.

Xem bài viết sau để biết thêm thông tin về bản cập nhật tại chỗ. http://www.devproconnections.com/article/net-framework/net-framework-45-versioning-faces-problems-141160

+0

Xin chào, cảm ơn bạn đã đăng bài này, tôi đang gặp sự cố tương tự. Vì vậy, tôi phải gỡ cài đặt .net 4.5. Tuy nhiên - máy chủ nó đang chạy trên có '4.0.30319' - Tôi có cần phải làm lại dự án với năm 2010 không? – BRogers

+0

Nếu bạn có VS 2012 hoặc .NET 4.5 được cài đặt trên máy chủ trao đổi thì bạn đang sử dụng .NET 4.5 bit cho các dự án được xây dựng trong 4.0. Bạn có thể vẫn còn chúng tôi VS 2012 cho sự phát triển của bạn miễn là dự án được xây dựng trong .net 4.0 và máy chủ trao đổi không có cài đặt .NET 4.5. Trong trường hợp của tôi, tôi đã có một máy ảo trong môi trường trao đổi máy chủ mà tôi đã gỡ lỗi từ và đã phải sử dụng VS 2010 trên máy ảo đó để gỡ lỗi. –

+0

Tôi đã có cùng một vấn đề ngay bây giờ ... bạn có biết nếu có một số cải tiến về điều này? –

0

Tôi có cùng một vấn đề với cùng một đầu ra lỗi với máy chủ sản xuất của mình. Tuy nhiên, tôi có một máy chủ thử nghiệm với cùng cấu hình sử dụng khung công tác .Net 4.5 nhưng không gặp sự cố này. Vì vậy, tôi không nghĩ rằng gỡ bỏ cài đặt. Net 4.5 sẽ giải quyết vấn đề của tôi.

Giải pháp của tôi là tôi đã tìm thấy rằng trong máy chủ sản xuất ASP.Net mạo danh thiết lập trong IIS là kích hoạt.

Sau khi tắt nó, không gian chạy PowerShell của tôi có thể được tạo, snapin "Microsoft.Exchange.Management.PowerShell.E2010" có thể được thêm vào một ứng dụng của tôi đang hoạt động tốt!

Dường như nó gặp sự cố về quyền.

+0

Tôi không còn làm việc cho công ty mà tôi gặp vấn đề này nhưng điều đó nghe có vẻ giống như một cách giải quyết đầy hứa hẹn. Hy vọng rằng ai đó có thể xác nhận rằng bản sửa lỗi này cũng phù hợp với họ. Cám ơn vì đã chia sẻ. –

0

Tôi đã điều tra lỗi thực sự trong hội đồng Microsoft Exchange và vấn đề là lớp ExTraceConfiguration (nội bộ) từ hội đồng Microsoft.Exchange.Diagnostics.dll liệt kê tất cả các assembly được tải trong miền ứng dụng hiện tại. Nếu nó tìm thấy System.IdentityModel hoặc System.ServiceModel, nó sử dụng sự phản chiếu để cấu hình một số truy tìm cho chúng. Nhưng mã phản chiếu không tương thích với. 4.5 ServiceModel và một lỗi xảy ra. Sau khi lỗi được phát hiện (một điều kiện null được kiểm tra) một dấu vết đã được thử, nhưng mã hiện đang trong quá trình cấu hình truy tìm vì vậy => sự cố cứng.

Các giải pháp là sử dụng phản ánh trên Microsoft.Exchange.Diagnostics.dll, tải lên các loại ExTraceConfiguration và chạy nó là loại initializer:

type.TypeInitializer.Invoke(null, null); 

trước System.ServiceModel đã có một cơ hội để nạp được nêu ra trong miền ứng dụng của bạn. Trình khởi tạo này là một hàm tạo tĩnh chỉ có thể chạy một lần cho mỗi tiến trình, vì vậy sau đó bạn có thể an toàn khi nạp ServiceModel nếu bạn cần nó.

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