IIS site ile ilişkili bilgi < CustomMetaData > sırasında programlı sitesini silme silinmez

Belirtiler

Aşağıdaki senaryoyu düşünün:

  • Bir site, appcmd ya da ikili Microsoft.Web.Administration tarafından sunulan yönetilen API çağrıları kullanarak silin.

  • Yeni bir site Internet Information Services (IIS) 7.5 veya sonraki bir sürümünü oluşturun.

  • Yeni site hala silinen sitenin eski meta verileri kullanır.

Bu senaryoda, yeni oluşturulan sitesine erişmeye çalıştığınızda beklenmedik davranış oluşur. Örneğin, web tarayıcınızda "HTTP 503 – Hizmet kullanılamıyor" hata iletisi alabilirsiniz.

Neden

Silme işlemi varolan bir Web sitesinin IIS'de appcmd veya Microsoft.Web.Administration API'ları ve site eski özellikler IIS'nin ApplicationHost.config dosyasında < CustomMetaData > yapılandırma öğesinde tanımlanan olup olmadığını kullanarak programlı olarak gerçekleştirilen sorun oluşur. Bu senaryoda < CustomMetaData > etiketindeki siteyle ilgili bilgileri silinir. Aynı Kimliğe sahip yeni bir site silme işleminden sonra oluşturduysanız, bu yeni site eski sitenin eski özellikleriyle ilişkili olacaktır.

Çözüm

Appcmd veya Microsoft.Web.Administration çağrıları yapma yerine Web sitesini silmek için IIS Yönetim konsolunu kullanabilirsiniz. Bu yöntem silmeye çalıştığınız Web sitesi ile ilişkili hiçbir özel eski özellikler varsa, bunlar aynı zamanda IIS yapılandırma dosyası (ApplicationHost.config) silineceğini emin olur. Bu özellikleri beklenmedik eski silinen sitenin Kimliğini kullanır aynı sunucuda oluşturduğunuz yeni bir Web sitesi ile ilişkili olan gelen engeller.

Sitenin herhangi bir nedenle programlı olarak silmelisiniz ve IIS Yöneticisi konsolunu kullanamazsınız, eski özellikleri kullanarak site < CustomMetaData > öğesi ile ilişkili olan bilgileri de silinir emin olmak için iki geçici çözümlerden birini ekleyebilirsiniz.

Geçici Çözüm 1: appcmd komutlarını kullanın.

Appcmd sitesini silmek için kullanıyorsanız, IIS yapılandırmasında site olmuş olabilir herhangi bir eski özellikleri kaldırmak için aşağıdaki komutu çalıştırabilirsiniz:

Appcmd clear config -section:customMetadata -[path='LM/W3SVC/<SiteID>']
Not < Site > kimliği parametresi yalnızca appcmd komutlarını kullanarak sildiğiniz site tanımlayıcısı ile değiştirin.

Geçici Çözüm 2: Kullanım için Microsoft.Web.Administration çağırır.

Web sitesini silmek için Microsoft.Web.Administration yönetilen API çağrıları kullanıyorsanız, Web sitesinin IIS yapılandırmasını < CustomMetaData > öğesinde bulunan eski özellikleri de temizlemek için silindikten sonra aşağıdaki kod ekleyebilirsiniz:

string path = "LM/W3SVC/" + site.Id.ToString(CultureInfo.InvariantCulture);string pathWithSlash = path + "/";
for (int i = customMetadata.Count - 1; i >= 0; i--) {
ConfigurationElement metadata = customMetadata[i];
string key = (string)metadata["path"];
if (key != null &&
(
key.Equals(path, StringComparison.OrdinalIgnoreCase) ||
key.StartsWith(pathWithSlash, StringComparison.OrdinalIgnoreCase))
)
{
customMetadata.RemoveAt(i);
}
}


Not: "Site" değişken yalnızca Microsoft.Web.Administration API'lerini kullanarak sildiğiniz Web sitesini temsil eder.

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×