Asp.Net Publish 1

1 Ocak Cuma, 2010 | Asp.net Genel /*Yorumlar (4)*/

Asp.Net eğitimi alan hemen hemen tüm öğrencilerin sıkıntılarından biri de, yapılan uygulamaların gerçek sunucuda nasıl yayınlanacağıdır. İşi bilenler için gayet basit gibi görünse de tecrübesi olmayan kişiler için ızdırap haline dönüşebilir.
Hal böyle olunca bu konu ile ilgili tecrübelerimi aktaracağım küçük bir yazı dizisi hazırladım.

Konuyu üç bölüm halinde işleyeceğim.

İlk bölüm, uygulamanın ftp ile sunucuya yüklenmesi.
İkinci bölüm, uygulamanın (varsa) kullandığı veritabanının sunucuya yüklenmesi.
Son ve üçüncü bölüm ise bir takım ipuçları içerecektir.

Birinci Bölüm

Bu bölümde, resimde görülen örnek projeyi sunucuya yüklenecek hale getireceğiz. Bunu göstermemim sebebi, uygulamanın çalışması için sunucuya herşeyi yüklenmesine gerek olmadığıdır.
solution

Yayın Öncesi Ayarlar

Yayınlamadan önce bir iki ayar yapmamız gerekiyor. Web.config dosyasını açıp, compilation -> debug özelliğinin degerini false olarak ayarlıyoruz. Bu performans açısından önemli.
compilation
Bu konu ile ilgili daha fazla bilgi edinmek isterseniz Scott Guthrie's şu yazısını okumanızı tavsiye ederim.
Daha sonra, çalışma zamanıruntime nda ki olası hataları daha ayrıntılı görmek için customError -> mode özelliğinin değerini false olarak ayarlıyoruz.
customerrors
Bunu yapmanızı özellikle tavsiye ederim. Genelde ilk denemelerde hata alma olasılığı yüksektir. Detay görmek problemleri çözmekte çok faydalı olacaktır. Her şey yoluna girdiğinde şu yazıdaki gibi bir hata yönetimi yapmak işinize yarayabilir.


Internet Explorer -> Settings -> Advanced
explorer settings
Seçili Seçili Değil
checked unchecked

Yayın öncesi ayarları yaptıktan sonra sıra geldi uygulamanın sunucuya gönderilecek çıktısının alınması. Bunun için Projeye sağ tıklayıp Publish komutunu veriyoruz. Bu komut ile proje önce derlenir, hataerror alınırsa işlem iptal olur. Kimi zaman ikazlarwarnings alabilirsiniz ve genelde de size nerede olduğu konusundan bilgi vermez. Bu gibi durumlarda aklıma gelen olası sorun, projenin ihtiyaç duyduğu bir kaynağı (resim, script vs) bulamamasıdır.
publish folder
Asp.Net projeleri için birden fazla Publish seçeneği bulunmaktadır. Varsayılan seçenek, belirtilen bir klasöre sadece sunucuya gitmesi gereken dosya va klasörlerin çıktısını oluşturur. Zaten bu da bizim istediğimiz seçenek. Diğer seçenekleri görmek yada kullanmak için (Örneğin local sunucuya yayınlamak gibi) üzerinde üç nokta bulunan düğme işinizi görecektir. Herhangi bir değişiklik yapmadan çıktılar için bir yol belirliyoruz.
publish settings
İşlem başarılı bir şekilde tamamlandığında aşağıdaki gibi bir klasör çıktısı olacaktır. Bunlar sunucuya gitmesi gereken dosyalardır.
publish output


Bin klasöründeki dll dosyaları ve config uzantılı dosyalar sunucuya yüklendiğinde uygulamanız sonladırılır ve ilk çağrıda yeniden başlar. Bu durumda uygulama içindeki tüm oturumsession vs yok olacaktır. Size tavsiyem bakım zamanlarını geç saatlerde yapın ve app_offline.htm adında bir dosya oluşturup sitenin kök klasörüne koyun. Uygulama erişimini engelleyecektir.

Geriye son bir işlem kaldı. Çıktıların sunucuya yüklenmesine. Bunun için bir ftp uygulamasına ihtiyac var. Bir çok paralı yada parasız alternatif olmasına karşın benim tavsiye Total Commander adlı uygulamayı kullanmanız.
ftp site settings
Resimde görüldüğü gibi ftp sunucunuzu uygulamaya kayıt edin. Publish klasöründeki tüm dosyaları sunucu bilgisayarında size verilen (bu genelde ya wwwroot yada httpdocs adında bir klasör olur) klasöre kopyalayın.
ftp publish
 


Enterprise Library, Linq yada EntityFramework gibi yapılar kullanacaksanız, hosting paketinizin size vermiş olduğu Trust Level' ın medium yada full olduğundan emin olun. MVC gibi OutOfBand (şimdilik) denilen framework'lerinde direk çalışmadığını belirtmek isterim . Bunun için sunucunuzdan destek almalısınız.

Artık (veritabanı kullanmıyorsanız) uygulamayı test edebilirsiniz. Olası durumalara karşı problemleri çözüp yukarıda gerekli adımları tekrar etmeniz yeterli olacaktır.

Birinci bölümün sonu ...

Yorumlar

unknown

Hocam elinize sağlık çok güzel bir kaynak olmuş

23 Ağustos Pazartesi, 2010

altug

merhabalar hocam.gerçekten çok işime yaradı bu bilgiler,teşekkürler.
yalnız app_ofline.htm'de bir "f" eksik galiba app_offline.htm olmalı...
ilgilenen arkadaşlara duyurulur. iyi çalışmalar!

24 Ekim Pazar, 2010

Emre AYRILMAZ

Düzeltildi.

24 Ekim Pazar, 2010

irem


Hocam merhabalar,



ben asp.net 3.5 c# ile web sitesi uygulamsı geliştirdim ve server da(natro da) yayınladım.Natro server da trust level nı medium yapmış.Web sitesi normalde çalışıyor fakat resim eklemek istediğimde



Güvenlik Özel Durumu



Açıklama: Uygulama, güvenlik ilkesi tarafından izin verilmeyen bir işlem gerçekleştirmeye çalıştı. Bu uygulamaya gerekli izni vermek için lütfen sistem yöneticinize başvurun veya yapılandırma dosyasında uygulamanın güven düzeyini değiştirin.



Özel Durum Ayrıntıları: System.Security.SecurityException: 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' türündeki izin isteği başarısız oldu.



Kaynak Hatası:




 









[İlişkili kaynak satırı yok]


Şeklinde hata veriyor.Resim yazılacağı kalsöre yazma yetkisi veridğime halde sorun çözülmedi.Natrodaki müşteri temsilcisi ise serın trust level nı full e geçiririz fakat oluşacak güvenlik açıklarından sorumluluğu kabul etmeyiz şeklinde cevap döndüler.Server daki trust level ayarını full e geçirmeden bu sorunu nasıl çözebilirim?


10 Mart Cumartesi, 2012

Yorum Yaz

Ad

Email (sahte adresli yorumlar silinir.)

Yorum