2011-07-25 1 views
1

나는 어떤 사용자가 내 웹 서비스를 호출하는지 파악하려고합니다. 이렇게하려면 Environment.UserName을 전달하고 싶습니다. 그러나, 단지 문자열이라면, 자신의 클라이언트를 작성하는 사람은 "asdf"에 넣고 내가하려는 것을 우회 할 수 있습니다. 내가 전화 할 때 이제C# 웹 서비스 호출을 통한 클래스의 전용 변수가 작동하지 않습니까?

public class UserInfo 
{ 
    private string userName; 

    public UserInfo() 
    { 
     userName = Environment.UserDomainName + "/" + Environment.UserName + " on " + Environment.MachineName; 
    } 
    public string getUserName() 
    { 
     return userName; 
    } 
} 

: 그래서 내 웹 서비스의 공용 클래스를 선언

ClientTest.ServiceReference.UserInfo user = new ClientTest.ServiceReference.UserInfo(); 

을 내 클라이언트에, 나는 내 정보 ("내 컴퓨터에 도메인/나")를 얻을 것이라고 생각했다. 그렇지 않습니다. 웹 서비스가 정보를 얻습니다 ("NT AUTHORITY/NETWORK SERVICE on ServerComputer")

이 코드가 작동하도록 수정 한가요? 내 솔루션으로도 가능합니까? 더 좋은 방법이 있습니까?

+0

이것은 사용자 로컬 PC에서 실행되는 Windows 응용 프로그램 클라이언트입니까? –

+0

예, 이것은 PC의 Windows 응용 프로그램입니다. 내 웹 서비스에 연결합니다. 지금 당장 양측을 통제 할 수 있지만, 웹 서비스가 시작된 이래로 나는 앞으로 클라이언트를 제어 할 수있게되었습니다. – Tizz

+0

하,이 정확히 내 마지막 질문에 대답했다 : HttpContext.Current.User 서버에서 사용 (한 번 인증 된) – Tizz

답변

1

환경을 사용하고 싶지 않다고 생각합니다. 사용자가 서비스에 액세스하려고 시도하는 것이 아니라 서비스가 실행중인 도메인, 사용자 이름 및 머신을 얻는 것만 큼 보이는 것입니다.

나는 당신이 원하는 것을 WebService.Context 개체라고 믿습니다. 이렇게하면 HTTP 클라이언트와 관련된 정보에 액세스 할 수 있습니다.