13 Ağustos 2012 Pazartesi

ASP.NET FileUpload ve Dosya Yazma Yetkilendirme Problemi ve Çözümü

ASPNETLokalde çalışan projenizi sunucuya gönderdikten sonra, File Upload kontrolünü kullanarak dosya yüklemek istediğinizde ya da sunucu üzerinde herhangi bir fiziksel dosya oluşturmak istediğinizde eğer uygun yetkilendirme yapılmamış ise aşağıdakine benzer bir hata alabilirsiniz.

 

Access to the path 'C:\inetpub\vhosts\site.adi.com.tr\httpdocs\Uploads\dosya.doc' is denied.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Access to the path 'C:\inetpub\vhosts\site.adi.com.tr\httpdocs\Uploads\dosya.doc' is denied.

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6 and IIS 7, and the configured application pool identity on IIS 7.5) that is used if the application is not impersonating. If the application is impersonating via <identity impersonate="true"/>, the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

Bu durum, sitenizin çalışmasını sağlayan kullanıcı hesabının ilgili klasör üzerinde işlem yapmaya yetkili olmamasından kaynaklanır. Bu kullanıcıya gerekli yetkileri vererek sorunu çözebilirsiniz.

IIS 5 kullanıyorsanız MAKİNAADI\ASPNET kullanıcısı, IIS 6 ve IIS 7 için IUSR_MAKİNAADI kullanıcısı, IIS 7.5 için de ApplicationPool’a bağlı olan kullanıcı için yetkilendirme yapmalısınız. Ayrıca eğer sisteminizde plesk yüklü ise yine hangi kullanıcı yönetimden sorumlu ise o kullanıcıya yetki vermek gerekir.

10 Ağustos 2012 Cuma

Açık Akademi öğrencilerinin izlemesi gereken bir röportaj

@IrisClasson nasıl bir yıldan az zamanda developer oldu?

27 yaşından sonra diyetisyenliği bırakıp, developer olmaya karar verdi. Bir yıldan az bir sürede amacına ulaştı. Şimdi, İsveç’in Göteborg şehrinde Dotnet Mentor firmasında tam zamanlı bir developer olarak çalışıyor. Ayrıca www.irisclasson.com adresindeki blogunda bilgilerini takipçileriyle paylaşıyor.

Kaynak: http://blog.pluralsight.com/2012/08/07/interview-with-iris-classon-how-she-became-a-developer-in-less-than-a-year/

8 Ağustos 2012 Çarşamba

Macworld Expo Boston 1997

Here is the full version of the 1997 Boston Macworld expo where we see Steve Jobs for the first time since returning to work for Apple after being gone since 1985.

This was a very historic time for Apple because they were almost bankrupt at the time, so Steve announces a temporary partnership with Microsoft to a very hostile crowd. Bill Gates also makes an appearance.

Windows 8’de TL Simgesi

image

Microsoft Türkiye ve Merkez Bankası ortak bir çalışma yaparak Türk Lirası sembolünü Windows’a kazandırdı. Türk Lirası’nın yeni sembolü Windows 8’de Türkçe klavyelerde yer alacak ve kullanılabilecek.

Windows 8’de Türkçe Q ve Türkçe F klavyelerde AltGr+T tuş kombinasyonu ile Türk Lirası sembolü kullanılabilecek.

Ayrıca, yeni TL sembolü Windows 8’in ve Windows Server 2012’nin sanal klavyesinde de yer alıyor.

image

27 Temmuz 2012 Cuma

SQL Server Date ve Time tiplerinin ADO.NET ile kullanımı

SQL Server'daki Date ve Time veri tiplerini ADO.NET tarafında nasıl kullanırız?

Sql Server içerisinde yer alan date ve time veritipleri, .NET Framework 3.5 sürümünün ilk servis paketi (Service Pack 1 (SP1)) ile birlikte .NET tarafında da desteklenmeye başladı. System.Data.SqlClient tarafından sunulan tüm yenilikleri kullanabilmek için .NET Framework 3.5 ve Servis Paketinin işletim sisteminizde yüklü olması gerekiyor.

image

Time veri tipi için, .NET Framework tiplerinden System.TimeSpan kullanılması tavsiye ediliyor. Diğer tipler için aşağıdaki tabloyu inceleyebilirsiniz.

image

Date ve Time tiplerinin örnek kullanımına ait kodlar için yine aşağıya bakmanız yeterli.

SqlParameter p = new SqlParameter();
p.ParameterName = "@Date";
p.SqlDbType = SqlDbType.Date;
p.Value = "1992/6/25";


SqlParameter p2 = new SqlParameter();
p2.ParameterName = "@time";
p2.SqlDbType = SqlDbType.Time;
p2.Value = DateTime.Parse("12:17:39").TimeOfDay;


http://msdn.microsoft.com/en-us/library/bb675168.aspx linkindeki makalede SQL Server 2008 ile gelen Date ve Time veri tipleri, ADO.NET içerisinde kullanımı da gözönünde bulundurularak inceleniyor. Ayrıca http://msdn.microsoft.com/en-us/library/ms180878%28SQL.100%29.aspx linkinde de faydalı şeyler bulabilirsiniz.



Time tipinin ADO.NET tarafındaki kullanımı için örnek bir makaleye de aşağıdaki linkten ulaşabilirsiniz.

http://blogs.msdn.com/b/usisvde/archive/2007/11/14/time-for-ado-net.aspx



Time veritipinin SQL üzerindeki kullanımı için de bu makaleye bakabilirsiniz.

SQL Server – Date ve Time Veri Tipleri

Bildiğiniz gibi datetime veri tipi ile hem tarih hem zaman bilgisini bir arada tutabiliyoruz. Bu bilgilere ayrı ayrı ihtiyaç duyduğumuzda da bir çok gereksiz dönüşüm işi yapmak zorunda kalıyoruz. SQL Server üzerindeki Date ve Time tiplerini kullanarak bu karmaşaya bir çözüm üretilebilir. Tarih için Date ve tarihten bağımsız olarak sadece zaman bilgisi tutmak için de Time veri tipini kullanabiliriz.

BooksOnline’dan alınmış olan aşağıdaki tabloda date ve time veri tipleri ile ilgili bilgiler bulabilirsiniz.

image

Date ve Time veritipleri, tür dönüşümleri sırasında kendilerinden beklendiği gibi bir davranış sergiliyorlar. datetime tipinden, date ya da time tiplerine bilinçsiz (implicitly) tür dönüşümü yaparken dahi ihtiyaç duyulan doğru kısım otomatik olarak dönüştürülebiliyor.

Bilinmesi gereken önemli noktalardan birisi date + time aritmetiğinin mümkün olmadığıdır. Bu yüzden, eldeki date ve time değerlerinden bir datetime oluşturmak için aşağıdaki gibi bir extra çalışma yapmak gerekiyor:

DECLARE @tarih date = '2012-06-25';
DECLARE @zaman time = '12:17:08.050';
DECLARE @dt datetime2;

SET @dt = dateadd(ms, datediff(ms, 0, @zaman), cast(@tarih as datetime2));

select @dt;

Sonuç; 2012-06-25 12:17:08.050 şeklinde olacaktır.

Bir sonraki yazımda date ve time veritiplerinin .NET tarafında nasıl ele alınacağından bahsedeceğim.