2009-12-02 4 views
0

Windows 인증을 사용하는 기존 ASP.NET보고 응용 프로그램이 있습니다. 많은 보고서 생성 코드가 별도의 클래스에 있으며 핵심 오류 로거가 작성하지 않은 경우이 오류 로거는 WindowsIdentity.GetCurrent()를 사용하여 Windows 응용 프로그램 용으로 작성된 것으로 믿습니다. ASP.NET의 경우에는 서버에서 ASP.NET 페이지를 실행하는 계정을 반환합니다.ASP.NET은 페이지 외부의 사용자 이름을 얻습니다.

페이지의 User.Identity.Name을 사용하는 것이 올바른 방법 일 것이라고 생각하지만 페이지의 보고서 생성 클래스에서만 사용할 수 있습니다. 추가 매개 변수로 전달하지 않고 오류 로거 클래스를 가져 오는 방법이 있나요?

수많은 보고서 클래스가 있으므로 모든 매개 변수를 추가하고 매개 변수를 추가해야 할 필요가 있습니다.

답변

2

당신이 당신의 web.config에서 가장을 사용할 수있는 경우 :

.... 
<authentication mode="Windows"/> 
<identity impersonate="true"/> 
.... 

보고서 클래스가 올바른 사용자를 얻을 것이다.

HttpContext.Current.User.Identity.Name 

을하지만, 호출자가 ASP.NET 요청에서 제공하거나 것 확인 : 귀하의보고 클래스는 System.Web 어셈블리를 참조 할 수 있습니다 당신이 코드를 수정하고자하는 경우

, 당신은 또한 할 수 널 참조를 던지십시오.

+0

물론 HttpContext.Current.User.Identity.Name은 분명해 보입니다. asp.net에서 왔을 때이 속성을 사용하도록 오류 로거를 수정합니다. – PeteT

관련 문제