IIS 7. uygulamasında bir uygulama oluşturmak için ServerManager (Microsoft.Web.Administration.dll) kullanıyorum. bir uygulamaya (iis yönetici özelliği gibi sağ tıklama -> uygulamaya dönüştürme) Bu nasıl yapılabilir? Bu lib ile ilgili çok az belge buldum ve hiçbiri bu özel işlevselliğe atıfta bulunmadı. Teşekkürler.Uygulama içinde Uygulama oluşturmak için ServerManager'ı kullanma
cevap
Bunu yapmanın yolu, sitenizdeki tüm uygulamaların düzleştirilmiş bir ağacı olan Site.Applications
koleksiyonunu işlemektir.
Bu örnekler için, içeriğin yerel sabit diskte yer aldığı "MySite" adlı bir site varsayalım: d:\mysite\www
. Sitenin IIS numarası 3
olup site "MySite" olarak da adlandırılan kendi uygulama havuzunda bulunur.
Biz de
biz siteyi almak ile biz değişken site
boyunca kullanacağız bir uygulama eklemek istediğiniz başlatmak için site için aşağıdaki klasör yapısını varsayıyoruz:
// Get my site
Site site = serverManager.Sites.First(s => s.Id == 3);
kök "/" uygulaması:
Her sitenin bir "kök" uygulaması vardır. Biz %systemroot%\windows\system32\inetsrv\config
bulunan applicationHost.config
açıp sitemiz için <site>
düğümün yerini ise şunları görürüz:
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\mysite\www" />
</application>
</site>
Her <site>
<application>
's koleksiyonu içerir. Kök uygulamasını tanımlayan en az bir uygulama her zaman olacaktır, /
.
applicationPool
özniteliği, hangi uygulama havuzunu kullanacağını belirtir.
Tek bir alt öğe olduğunu unutmayın: virtualDirectory
.
Her application
modelinde virtualDirectory
öğelerinden oluşan bir alt koleksiyon var ve bu koleksiyonda genellikle en az bir öğe bulunacaktır.
kök uygulama içinde varsayılan <virtualDirectory>
söyler:
- bu kök (
path="/"
) ve fiziksel olarakd:\MySite\www
(physicalPath="d:\MySite\www"
) de dosya sisteminde bulunur o - olduğunu.
her virtualDirectory
arasında path
üst application
yolunda belirtilen path
görelidir.
Bir sanal dizin ekleme:
Application rootApp = site.Applications.First(a => a.Path == "/");
rootApp.VirtualDirectories.Add("/vdir_1", @"D:\MySite\other_content");
serverManager.CommitChanges();
çıkan: biz yapardım dosya sistemi üzerinde başka bir yere eşleştirilmiş "site köküne" için bir sanal dizin eklemek istiyorsa
yapılandırma benziyor:
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
</application>
</site>
Ve IIS Yöneticisi'nde görüyoruz:
varolan sanal dizin sanal dizin ekleme:
root.VirtualDirectories.Add("/vdir_1/sub_dir1", @"d:\MySite\more_content");
bu sonuçlanır: biz yapardım vdir1
bir çocuk sanal dizin eklemek istiyorsa
:
( ) 10 IIS Yöneticisi: sanal dizinleri eklerken akılda tutulması gereken birkaç şey var:
- belirtildiği gibi, sanal
path
daima üst uygulamadanpath
- göredir sanal bir
path
örneğinin son kısmı/vdir_1
ve.../sub_dir1
sanal dizin adı olur - Aynı fiziksel klasöre sanal dizin yolu adı kısmının haricinde
- , yolun tüm bölümlerine birden fazla sanal dizin noktasına sahip olacak derece yasal , web sitesi kökünde (
d:\MySite\www
) fiziksel yollar veya sanal yollar olarak olmalıdır. diğer bir deyişle,path
, zaten var olan bir şeyin üstesinden gelebilmelidir, aksi halde IIS yöneticisi içinde sanal bir dizin görünmeyecektir. Bu son nokta ile ilgili olarak
, örneğin, fiziksel bir klasör yoksa veya sanal dizin /vdir_2
denilen ancak aşağıdaki kod tamamen yasaldır şudur: /vdir_2/sub_dir1
göstermek görmez
root.VirtualDirectories.Add("/vdir_2/sub_dir1", @"d:\MySite\even_more_content");
IIS yöneticisinde ancak yasaldır ve aslında buna göz atabilirsiniz. Ayrıca applicationHost.config
görebiliyorum:
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
</site>
dönüştürme Klasör Uygulamasına:
süre önce bir ASP yüklendi edin.
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
</application>
</site>
: applicationHost.config
yılında
Application app = site.Applications.Add("/app_1", @"d:\MySite\www\app_1");
// set application pool, otherwise it'll run in DefaultAppPool
app.ApplicationPoolName = "MySite";
serverManager.CommitChanges();
yeni bir <application>
unsur eklendi görebilirsiniz: Sitenizdeki /app_1
klasörüne NET uygulama ve Bunu yapmamızı kendi Uygulaması çevirmeye istiyorum IIS biz bakın:
Bu yapmanın eşdeğerdir "Co sağ tıklayın Uygulamaya ters. Mevcut Uygulamaya
Ekleme Uygulama:
varolan uygulamanın bir çocuk gibi bir uygulama eklemek çok basittir. Biz /app_1/sub_app_1
/app_1
bir alt uygulama yapmak istiyorum ki:
Biz sadece yapacağını:
Application app =
site.Applications.Add("/app_1/sub_app_1", @"d:\mysite\www\app_1\sub_app_1");
app.ApplicationPoolName ="MySite";
çıkan yapılandırma gibi görünecektir:
IIS<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
</application>
<application path="/app_1/sub_app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\mysite\www\app_1\sub_app_1" />
</application>
</site>
:
Uygulamasına Sanal dizin ekleyin:
Şimdi biz yapacağını bu uygulamaya bir sanal dizin eklemek istedim: Biz yeni <virtualDirectory>
eleman vardır görebilirsiniz applicationHost.config
yılında
Application app = site.Applications.First(a => a.Path == "/app_1");
app.VirtualDirectories.Add("/vdir_1", @"d:\MySite\other_content");
eklenmiştir:
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
<virtualDirectory path="/vdir_1" physicalPath="d:\MySite\other_content" />
</application>
</site>
IIS'de şunu görüyoruz:
Yine sanal yol /vdir1
hep içeren uygulamanın yoluna göreceli olduğuna dikkat etmek önemlidir. Uygulamaya Sanal dizin Mevcut
dönüştürme:
biz bir uygulamaya az önce oluşturduğumuz sanal dizin (/app_1/vdir1
) dönüştürmek istiyorsa ne olacak?Biz iki adımda bunu yapmak gerekir:
// Get the application
Application app_1 = site.Applications.First(a => a.Path == "/app_1");
// Find the virtual directory
VirtualDirectory vdir_1 = app_1.VirtualDirectories.First(v => v.Path == "/vdir_1");
// Remove it from app_1
app_1.VirtualDirectories.Remove(vdir_1);
// Create our application
Application vdir_1_app = site.Applications.Add("/app_1/vdir_1", vdir_1.PhysicalPath);
// set application pool, otherwise it'll run in DefaultAppPool
vdir_1_app.ApplicationPoolName = "MySite";
serverManager.CommitChanges();
çıkan applicationHost.config
benziyor: IIS Yöneticisi'nde
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
</application>
<application path="/app_1/vdir_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\other_content" />
</application>
</site>
gördüğümüz:
için Uygulama Ekle Mevcut Sanal Dizin:
Sanal dizine bir uygulama eklemek istiyorsak ne olur, bu nasıl çalışır? Bu örnekte, daha önce oluşturduğumuz sanal dizin /vdir_1/sub_dir1
'a bir uygulama ekleyeceğiz. Gördüğümüz
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
</application>
<application path="/app_1/vdir_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\other_content" />
</application>
<application path="/vdir_1/sub_dir1/app_2" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\mysite\other_content" />
</application>
</site>
Ve IIS yöneticisinde:
dönüştürme Mevcut Çocuk Klasör Bir Uygulamaya:
Application app =
site.Applications.Add("/vdir_1/sub_dir1/app_2", @"d:\mysite\other_content");
app.ApplicationPoolName = "MySite";
serverManager.CommitChanges();
çıkan yapılandırma benziyor Gibi Son bir örnek, biz bir uygulamaya /other_apps/sub_app_1
açmak istiyorum:
Bizim kod benziyor:
Application app =
site.Applications.Add("/other_apps/sub_app_1", @"d:\mysite\other_content");
app.ApplicationPoolName="MySite";
serverManager.CommitChanges();
çıkan yapılandırma:
<site name="MySite" id="3">
<application path="/" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="D:\MySite\www" />
<virtualDirectory path="/vdir_1" physicalPath="D:\MySite\other_content" />
<virtualDirectory path="/vdir_1/sub_dir1" physicalPath="D:\MySite\more_content" />
<virtualDirectory path="/vdir_2/sub_dir1" physicalPath="D:\MySite\even_more_content" />
</application>
<application path="/app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\www\app_1" />
</application>
<application path="/app_1/vdir_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\MySite\other_content" />
</application>
<application path="/vdir_1/sub_dir1/app_2" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\mysite\other_content" />
</application>
<application path="/other_apps/sub_app_1" applicationPool="MySite">
<virtualDirectory path="/" physicalPath="d:\mysite\other_content" />
</application>
</site>
IIS yöneticisinde:
Bu, siteler, uygulamalar ve sanal dizinler arasındaki ilişkiyi açıklamaya yardımcı olur.
- 1. Raylar İçinde Modül Kullanma Model Uygulama
- 2. Uygulama içinde gömülü sürüm kontrolü Uygulama
- 3. Kalıtsal sınıflar içinde kilit kullanma için en iyi uygulama nedir
- 4. Microsoft'un Uygulama Bloklarını Kullanma
- 5. Crashlytics Android: Uygulamanın, bir uygulama oluşturmak için
- 6. xcode iki uygulama oluşturmak için bayrakları derleyin.
- 7. iPhone için bir uygulama oluşturmak için CMake nasıl kurulur
- 8. Qt3Support: Buradan bir Qt3 uygulama oluşturmak çalışıyorum
- 9. docker içinde PCL başvuran ASP.NET Çekirdek uygulama oluşturmak Can not
- 10. Telnet Uygulama Öğelerini JavaScript'te Kullanma
- 11. Uygulama katmanlarını DAL katmanında kullanma
- 12. Özel bir Google Uygulama İşlevi içinde yerleşik işlevler kullanma
- 13. iTunesConnect: Uygulama, testflight'a gönderilen uygulama için durduruldu
- 14. benim SNS bir uygulama oluşturmak istiyorum
- 15. Uygulama uygulaması, uygulama mucidi
- 16. Uygulama Yükleyici'den uygulama yüklenemiyor
- 17. Bir python web tabanlı uygulama oluşturmak için seçenekler
- 18. Konsol tabanlı bir uygulama oluşturmak için hangi Ruby kütüphanelerini kullanmalıyım?
- 19. Zend framework ile mutlak URL'ler oluşturmak için en iyi uygulama?
- 20. nasıl tek uygulamada uygulama widget'ı ile android uygulaması oluşturmak için
- 21. benim uygulama için
- 22. uygulama
- 23. MS Access'i Evrensel Uygulama ile Kullanma
- 24. Tüm mevcut konuları kullanma kötü bir uygulama?
- 25. /uygulama
- 26. Uygulama için hangi etkinlik kapanacak?
- 27. Varolan Sayfayı Uygulama sayfası olarak kullanma
- 28. Uygulama güncellemesi uygulama mağazasında nasıl yayınlanır?
- 29. nodejs içinde CPU bağlı görevlerini uygulama yolları
- 30. Android Uygulama
Harika cevap Kev. +1 –
@mike - şerefe Mike. :) – Kev
Harika, teşekkürler @Kev. Uygulamaya Dönüştür komutları altında, yükleyicilerimden biri, normal bir dizin yerine VDir olarak alt dizini oluşturuyordu, bu yüzden bu kodu bir uygulamaya çevirmek için kullandığımda bir "dizin zaten var" verdi. Çözüm, uygulama eklemeye başlamadan önce var olan VDir'i VirtualDirectories koleksiyonundan kaldırmak için yalnızca API'yi çağırdı. Küçük bir öğe, ancak talimatlarınız dahil edilmesine değer olabilir. –