2013-06-18 7 views
9

Farklı bir derlemeden işlevleri kullanan bir Web.Api uygulamasına sahibim. Bu derleme için bazı dizeleri sakladığım bir .config dosyası oluşturdum.dll.config geçici asp.net dosyaları klasörüne kopyalanmadı

O dizeleri birini getir gerektiğini Aşağıdaki kodu kullanıyorum: Geçici asp.net dosyalarına

private static string LogUrl = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings.Settings["WebApi-LogUrl"].Value.ToString(); 

Assembly.GetExecutingAssembly().Location puan, (C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Geçici ASP.NET Dosyaları \ root \ dc2fa3d4 \ 834ee436 \ assembly \ dl3 \ cd068512) ancak dll.config dosyam orada kopyalanmadı. Sonuç olarak, uygulamada hata ayıklanamıyorum ve aynı zamanda kodu gerçek bir IIS sunucusunda çalıştırırken null değeri veriyor.

Ayarı almadan hemen önce geçici bir klasöre erişebiliyorsam geçici bir klasörü tutabiliyorum ve orada dll.config dosyamı kopyaladığımda tüm işlemler çalışıyor, ancak bunu otomatik olarak nasıl yapmalıyım.

ben olarak ayarlanmış benim dll.config dosyası için özelliklere sahip "eylemi oluşturun: içerik", "çıkış dizinine kopyalayın: Her zaman"

Herhangi bir yardım mutluluk duyacağız, şimdi saatlerce googled var. !

// The dllPath can't just use Assembly.GetExecutingAssembly().Location as ASP.NET doesn't copy the config to shadow copy path 
var dllPath = new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath; 
var dllConfig = ConfigurationManager.OpenExeConfiguration(dllPath); 

// Get the appSettings section 
var appSettings = (AppSettingsSection) dllConfig.GetSection("appSettings"); 
return appSettings.Settings; 

anahtar vardır: :(

Saygılarımızla, Peter Larsson

cevap

17

Ben aşağıdaki kodu kullanarak bu çözüldü

new Uri(Assembly.GetExecutingAssembly().GetName().CodeBase).LocalPath 

ben uydurdum Zhaph - Ben Duguid 'un okunmasından sonra çözüm burada cevaplandı: https://stackoverflow.com/a/2434339/103778.

Artık, web uygulamamın bin dizinindeki DLL dosyamı alabiliyorum.

Bunu daha da tartışmak üzere written up a blog post'dan beri var.

+0

Aha, bunu kontrol etmeliyim ... öneri için teşekkürler! –

+0

Benim için çalıştı. Bahşiş için teşekkürler! –

+0

Bu bana çok yardımcı oldu. Ayrıca CodeNase özelliği de sınıf Meclisi'nin bir özelliği olarak GetName() çağrısının işe yaramaz olduğunu fark ettim. – sluki