2017-12-01 7 views
-1

웹 양식이 있는데 누가 그것을 사용하고 있는지 기록하려고합니다. 내가 한 모든 연구는 IIS가 아니라 로컬 상자에서 사용하는 것이 전부였습니다.웹 양식의 사용자 이름을 얻는 중

tw.WriteLine(DateTime.Now + ": " + CurUser); 

출력 표시 :

2017년 12월 1일 오후 4시 13분 18초 : 나는 출력을 얻을

using System.Security.Principal; 

private void Form1_Load(object sender, EventArgs e) 
     { 
      string curuser = WindowsIdentity.GetCurrent().Name; 

     } 

System.Web.UI .WebControls.Label

나는 바보 같고 어리 석다라고 생각하고있다. 고마워요

참고 :이 사이트에서는 IIS에서 'Windows 인증'을 사용할 수 있습니다.

+0

해당 코드가 어떻게 출력되는지는 알 수 없습니다. 또는 출력. – David

+0

@David는 업데이트 된 게시물을 어떻게 출력하는지 알고 있습니다. – dwb

+0

'tw '란 무엇입니까? 'CurUser' 란 무엇입니까? (curuser와는 완전히 다른 변수입니다.) 새로운 코드는 어디에서 실행됩니까? 나는 당신이 테스트에서 실수를하거나 틀린 가정을하고 있다고 생각하는데, 질문을 본질적으로 무효로 만듭니다. – David

답변

0

CurUser이 무엇이든간에, Label의 인스턴스입니다. 이 아닌curuser 변수는 Page_Load에 선언 된 다음 사용한 적이 없습니다.

개체를 문자열로 출력하려고하면 시스템에서 해당 개체에 대해 .ToString() 구현을 내부적으로 호출합니다. 재정의되지 않는 한 (Label이 재정의하지 않으면) .ToString() (System.Object에서 상속)의 기본 구현은 해당 유형의 이름을 출력하는 것입니다. 이 경우 "System.Web.UI.WebControls.Label".

는 (의미가 있습니다. 결국, 어떻게 시스템이 본질적으로 복잡한 객체, 특히 사용자 정의 개체를 사용하면, 문자열로 표현해야 하는가? 쓸 수있는 방법을 알게 될 것입니다)

는 출력하지 관련이없는 작업을 수행 객체를 출력하려면 다음 값을 출력하십시오.

string curuser = WindowsIdentity.GetCurrent().Name; 
tw.WriteLine(DateTime.Now + ": " + curuser); 
+0

바로 그 점을 잊어 버렸습니다. 나는 이제 더 합리적인 결과를 얻고 있습니다. 결과는 다음과 같습니다. 12/1/2017 4:21:41 PM : IIS APPPOOL \ WebApp -이 응용 프로그램에 연결하는 Windows 자격 증명이어야합니까? – dwb

+0

@dwb : 테스트하지 않고 100 % 확신 할 수는 없지만 사용자가 잡는 것은 응용 프로그램 자체의 사용자 컨텍스트이며 연결된 웹 사용자는 아닙니다. 이것을 대신 해보십시오 :'string curuser = User.Identity.Name;'('User'는'Page' 객체의 속성입니다.) – David

+0

공백 응답 만 보여줍니다.2011 년 12 월 1 일 오후 4시 32 분 11 초 : 또한, 잊어 버린 점은 사용자가 사이트에 로그인하지 않은 것입니다. 문제가 있는지, 내가 잘못된 방향으로 가고 있는지 확실하지 않습니다. – dwb