2012-09-18 11 views
12

Exchange 2010 ek bileşeni yüklü bir PowerShell runspace oluşturan aşağıdaki kod var. Exchange powershell ek bileşeni yüklenemiyor: 'Microsoft.Exchange.Data.Directory.Globals' için tür başlatıcısı bir özel durum ekledi

Dim runspaceConfig = RunspaceConfiguration.Create() 

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

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

Visual Studio 2012 yüklemeden beri runspace config ek bileşeni ekler satırı çalıştırırken aşağıdaki hatayı alıyorum başladı. O nlog onaylamak mümkün olmuştur

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) 

nasılsa bu sorunu neden oluyor. Powershell runspace oluşturmadan önce bir nlog logger oluşturmanın kombinasyonu, hatayla sonuçlanır.

Nlog yapılandırma bölümünü uygulama yapılandırmamdan kaldırırsam ve boş bir boş günlüğe kaydediciyi oluşturursam, ek bileşen hata olmadan yüklenir. Ayrıca, nlog yapısını uygulama yapılandırmamda bırakırsam ancak bir nlog kaydedici oluşturmazsam, ek bileşen de başarıyla yüklenir.

  • Projeyi hem x64 hem de x86'da oluşturmayı denedim.
  • Değişim yönetimi araçlarını yeniden yükledim.
  • Değişim ortamında başka bir makinede denemeyi denedim.

Bu sorunu çözmeme yardımcı olabilecek herhangi bir öneride bulunabiliyorsa, bu konuda çok yardımcı olacağım.

Ben .NET 4.5 .NET 4.0 yazılır ve yüklendiğinde .NET 4.5 ile değiştirin olduğu anlamına gelecek şekilde yerde güncelleme olduğunu anladım daha fazla araştırma sonrasında sizi

cevap

5

ederiz. .NET 4.5'te neyin değiştiğini bilmiyorum, ancak .NET 4.5'i kaldırarak ve Visual Studio 2010'a geçerek sorun çözülüyor. Umarım Microsoft, yakın gelecekte bu sorunu çözecek ve bana izin verecek güncellemelere sahip olacak. Visual Studio 2012'yi tekrar kullanmak.

Yerinde güncelleştirmeyle ilgili daha fazla bilgi için aşağıdaki makaleye bakın. http://www.devproconnections.com/article/net-framework/net-framework-45-versioning-faces-problems-141160

+0

Hey, bunu gönderdiğiniz için teşekkürler, aynı soruna giriyorum. Yani, .net 4.5 kaldırmak zorundayım. Ancak - koşuyor olduğu sunucu 4.0.30319' var - Projeyi kesin olarak 2010 ile tekrar etmem gerekiyor mu? – BRogers

+0

Exchange sunucusunda VS 2012 veya .NET 4.5 yüklü ise, 4.0'da yerleşik projeler için .NET 4.5 biti kullanıyorsunuzdur. Projeniz .net 4.0'da yerleşik olduğu ve Exchange Server'ın .NET 4.5 yüklü olmadığı sürece muhtemelen geliştirme için hala VS 2012 olabilirsiniz. Benim durumumda, debugging yaptığım ve debugging için bu VM'de VS 2010'u kullanmak zorunda olduğum exchange server ortamında bir VM vardı. –

+0

Sadece şu anda aynı problemi yaşadım ... bunun üzerinde bir gelişme olup olmadığını biliyor musunuz? –

0

Üretim sunucumla aynı hata çıktısında tam olarak aynı sorun var. Bununla birlikte, aynı soruna sahip bir test sunucum var. Net 4.5 framework'ü kullanarak ancak bu sorunu yaşamadım. Yani kaldırma düşünmüyorum. Net 4.5 sorunumu çözecek.

Çözümüm, üretim sunucusunda ASP olduğunu buldum.IIS'de Net Impersonation ayarı etkin oldu.

Bunu devre dışı bıraktıktan sonra, powershell runspace oluşturulabilir, "Microsoft.Exchange.Management.PowerShell.E2010" ek bileşeni eklenebilir bir uygulamam iyi çalışıyor!

Bir çeşit izin sorununa sahip gibi görünüyor.

+0

Artık bu sorunu yaşadığım şirket için çalışmıyorum, ancak bu umut verici bir çözüm gibi görünüyor. Umarım birisi bu düzeltmenin onlar için de çalıştığını onaylayabilir. Paylaşım için teşekkürler. –

0

Microsoft Exchange derlemelerinde asıl sorunu araştırdım ve Microsoft.Exchange.Diagnostics.dll derlemesinden gelen ExTraceConfiguration sınıfı (iç) sorun, geçerli uygulama etki alanındaki tüm yüklü derlemeleri numaralandırıyordu. System.IdentityModel veya System.ServiceModel bulursa, onlar için bazı izleme yapılandırmak için yansıma kullanır. Ancak yansıma kodu .net 4.5 ServiceModel ile uyumlu değildir ve bir hata oluşur. Hata tespit edildikten sonra (bir null durumu kontrol edilir) bir iz denenir, ancak kod şu anda izleme işlemini yapılandırmaktadır: => hard crash.

çözümü Microsoft.Exchange.Diagnostics.dll üzerinde yansıma kullanmak ExTraceConfiguration türünü yüklemek ve çalıştırmak için bu tür başlatıcısı var:

type.TypeInitializer.Invoke(null, null); 

System.ServiceModel henüz yüklemek için bir şans olmuştur önce uygulama alanınız. Bu başlatıcı, yalnızca işlem başına bir kez çalışabilen bir statik yapıcıdır, bundan sonra ihtiyacınız olduğunda ServiceModel'i yüklemek güvenlidir.

İlgili konular