2010-05-18 18 views
6

ASP.NET için işlem kimliğini nasıl belirlersiniz? Bir kullanıcı Visual Studio 2008'de bir Web uygulama projesi için kök klasörünün bir alt klasöründe bulunan bir dosyayı silmek için System.IO kullanmak için tasarlanmış bir LinkButton'ı tıklattığında bir UnAthorizedAccessExeption alıyorum.ASP.NET - Süreç kimliğini nasıl buluyorsunuz?

cevap

9

İşlemi yürüten kullanıcı için: sayfayı isteyen kişi için Environment.UserName

: Page.User.Identity

Düzenleme: Ağ Servis ağının (örn IIS) üzerinde içerik sunumu için kullanılan varsayılan hesabıdır. Tüm built-in accounts. Klasöre Ağ Hizmeti erişimi vermeniz (bu hesap erişimini kullanan diğer tüm web sitelerinizi de vermek) veya başka bir hesap oluşturmanız gerekir.

IIS 6 veya 7 kullanıyor musunuz?

+0

Nelson, Yorumunuzu "... ya Ağı Servis erişim vermek" gerçekten aradığım buydu. Avitus bunu yapmanın bir yolunu teklif etti, ancak dükkanımın kimliğini doğru kullanmıyor. Zaten Windows kimlik doğrulamasını kullanıyordum ve Ağ Hizmeti'nin değiştirilmiş haklarını veriyordum. Bu, üretim sunucusunda çalışmazsa geri döneceğim. Bana yardım ettiğin için hepinize teşekkürler. Bir bütünlük olarak, hepinize MAX puan vermek istiyorum. Her biri uygun bir şekilde MAX'a neler yapabileceğimi bildirin. – dannyrosalex

+1

@Berlioz: Sadece bir üretim ortamında bunu bu şekilde yapmak isteyemeyeceğinizi unutmayın. Klasöre Ağ Hizmeti erişimi verirseniz, Ağ Hizmeti olarak çalışan tüm diğer web sitelerinin de erişimi olacaktır. Tipik olarak, varsayılan izinler/ayarlar tamamsa Ağ Hizmetini kullanırsınız, ancak kişiselleştireceğiniz her web sitesi için bir kullanıcı (yerel bilgisayar kullanıcısı olabilir) oluşturun. –

4

ASPX sayfasının yürütülmesi sırasında işlem kimliğini elde etmek istediğinizi varsayarım. Bu durumda: tek yapmanız gereken gidiyoruz ne

System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
+0

Evet, bu doğru ve kod satırınızı bir etikete ekledikten sonra "DOMAINNAME \ USERNAME" ifadesini görüntülemek için aşağıdakileri aldım. Açıkçası Windows ağında Windows kimlik doğrulamasını kullanıyorum. Bir sonraki sorum, lütfen beni eğit, "NETWORK SERVICE" hesabı nedir? – dannyrosalex

+0

Kullanıcıyı almanın en az üç yolu vardır: http://www.dotnetmonster.com/Uwe/Forum.aspx/vs-net-general/1854/Getting-user-name-Environment-UserName-vs-SystemInformation –

+1

@Berlioz: http://msdn.microsoft.com/en-us/library/ms684272%28VS.85%29.aspx –

2

dosyayı silmek haklarına sahip web.config bir

<identity impersonate="true" username="x" password="x" />

etiketi konur.

+0

... ya da "Ağ Hizmeti" erişimini verin, uygulama havuzunda kullanıcı/şifreyi değiştirin, Windows kimlik doğrulaması kullanın ... –

+0

Çözümüm SourceSafe içinde ise ve Cassini'de hata ayıklaması (F5) varsa, dosyalar alt klasör veya SS kaldırılmasını engeller mi? – dannyrosalex

+0

deb = debug? Visual Studio'nun web sunucusunu (Cassini) kullanarak hata ayıklama yapıyorsanız, uygulama havuzu (IIS) kimliğini değiştiremezsiniz. Avitus'un çalışması gereken şey, aksi takdirde bu klasördeki Ağ Hizmeti hesap izinlerini verebilir veya tümleşik (Windows) kimlik doğrulamasını kullanabilirsiniz (çoğunlukla intranet senaryolarında kullanışlıdır) –