요청자의 도메인 이름이나 전체 URL은 어떻게 얻을 수 있습니까?WCF 요청의 도메인 이름을 가져 옵니까?
답변
은 내가 당신의 질문을 이해 모르겠지만, 당신은 서비스 작업에 대한 호출을 Windows 사용자의 도메인 이름을 필요로하는 경우,이 사용
OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name
이 돌아갑니다 "{도메인 }\{사용자 이름}".
이 시도하고 저를 당신이 (당신은 아마 MSTEST 프로젝트에이 코드를 붙여 넣을 것) 무엇을 생각하는지에 관해 알려주세요 :
[TestClass]
public class AlternativeCredentials
{
// Contracts
[ServiceContract]
interface IMyContract
{
[OperationContract]
string GetUserName();
}
// Service
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
class MyService : IMyContract
{
public string GetUserName()
{
return OperationContext.Current.ServiceSecurityContext.PrimaryIdentity.Name;
}
}
// Client
class MyContractClient : ClientBase<IMyContract>, IMyContract
{
public MyContractClient() { }
public MyContractClient(Binding binding, string address) :
base(binding, new EndpointAddress(address)) { }
public string GetUserName()
{ return Channel.GetUserName(); }
}
#region Host
static string address = "net.tcp://localhost:8001/" + Guid.NewGuid().ToString();
static ServiceHost host;
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
host = new ServiceHost(typeof(MyService));
host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), address);
host.Open();
}
[ClassCleanup()]
public static void MyClassCleanup()
{
if (host.State == CommunicationState.Opened)
host.Close();
}
#endregion
[TestMethod]
public void UseUserNameCredentials()
{
using (MyContractClient proxy =
new MyContractClient(new NetTcpBinding(), address))
{
proxy.ClientCredentials.UserName.UserName = "MyUsername";
proxy.ClientCredentials.UserName.Password = "MyPassword";
proxy.Open();
Assert.AreEqual("EMS\\magood", proxy.GetUserName());
proxy.Close();
}
}
}
나는 이것을 시도 할 것이다. 고마워요. – DDiVita
잠시 생각한 후에, 나는 실제적인 서비스에 대한 어떠한 보안도하지 않고 있습니다. 이 메서드를 호출하면 프로세스를 실행하는 사용자가 어떤 사용자인지 알 수 있습니까? 나는 그것이 서비스를 실행하는 시스템 계정의 도메인/사용자 이름을 보여줄 것이라고 생각한다. 권리? – DDiVita
위의 예에서 "EMS \ magood"는 내 Windows ID입니다. WCF의 기본값은 ClientCredentialType = Windows입니다. TCP 바인딩 용 기본 설정으로 변경할 수 있습니다. 어떤 종류의 바인딩을 사용하고 있습니까? –
- 1. 현재 클래스의 이름을 가져 옵니까?
- 2. WCF 요청에서 도메인 이름을 요청 하시겠습니까?
- 3. 프로그래밍 방식으로 C에서 변수 이름을 가져 옵니까?
- 4. json은 키 이름을 텍스트로 가져 옵니까?
- 5. ADO.NET 필드에서 테이블 이름을 가져 옵니까?
- 6. 웹 페이지에서 변수 이름을 가져 옵니까?
- 7. Google지도 - XML 데이터에서 호수 이름을 가져 옵니까?
- 8. WCF 요청의 IPrincipal
- 9. AssociateColorProfileWithDevice, DeviceName은 어디에서 가져 옵니까?
- 10. 네임 스페이스가없는 열거 형 또는 클래스의 문자열 이름을 가져 옵니까?
- 11. 어떻게하면 자바 스크립트 파일에있는 모든 클래스 이름을 가져 옵니까?
- 12. SMS 테이블에서 보낸 사람의 연락처 이름을 가져 옵니까?
- 13. Go에서 현재 프로세스 (실행 파일) 이름을 가져 옵니까?
- 14. SQL Server 2008에서 Asp.Net 사용자 이름을 가져 옵니까?
- 15. PHP : 전달 된 var의 클래스 이름을 가져 옵니까?
- 16. 자바 : 패턴 클래스를 사용하여 그룹 이름을 가져 옵니까?
- 17. 주어진 Shasum에 대해 어떻게 git 분기 이름을 가져 옵니까?
- 18. Qt MVC - 사용자가 클릭 할 때 파일 이름을 가져 옵니까?
- 19. 전 처리기 매크로가 현재 클래스의 이름을 가져 옵니까?
- 20. 문자열에서 keyCode를 가져 옵니까?
- 21. 현재 UIView를 가져 옵니까?
- 22. URLLoader에서 URL을 가져 옵니까?
- 23. WCF 응용 프로그램에서 참조되는 웹 서비스 목록을 가져 옵니까?
- 24. WCF 서비스를 갖기 위해 C# 클래스 라이브러리를 가져 옵니까?
- 25. JQuery로 하위 도메인 AJAX POST 요청의 부모
- 26. FQDN에서 도메인 이름을 얻으시겠습니까?
- 27. 사용자가 스푸핑 도메인 이름을
- 28. 도메인 이름을 설정하십시오
- 29. .ka 도메인 이름을 설정하려고합니다.
- 30. WCF 서비스를 통한 요청의 스로틀 수
이 서비스에 액세스하는 데 사용되는 URL을 찾으시는 것입니까? 고객의 신원 은요? –
클라이언트의 참조 도메인이 없습니다. – DDiVita