System.Net.HttpListener 클래스

이 문서에서는 이 API에 대한 참조 설명서에 대한 추가 설명서를 제공합니다.

클래스를 HttpListener 사용하여 HTTP 요청에 응답하는 간단한 HTTP 프로토콜 수신기를 만들 수 있습니다. 수신기의 수명 동안 활성화 되었는지는 HttpListener 개체 및 해당 권한으로 애플리케이션 내에서 실행 됩니다.

사용 HttpListener하려면 생성자를 사용하여 HttpListener 클래스의 새 인스턴스를 만들고 속성을 사용하여 Prefixes 처리해야 하는 URI(Uniform Resource Identifier) 접두사를 지정하는 문자열을 포함하는 컬렉션에 HttpListener 액세스할 수 있습니다.

URI 접두사 문자열은 스키마(http 또는 https), 호스트, 선택적 포트 및 선택적 경로로 구성됩니다. 전체 접두사 문자열의 예는 .입니다 http://www.contoso.com:8080/customerData/. 접두사는 슬래시("/")로 끝나야 합니다. HttpListener 요청된 URI와 가장 밀접하게 일치하는 접두사를 가진 개체가 요청에 응답합니다. 여러 HttpListener 개체가 동일한 접 Win32Exception 두사를 추가할 수 없습니다. 이미 사용 중인 접두사를 추가하면 HttpListener 예외가 throw됩니다.

포트를 지정하면 요청된 URI가 다른 접두사와 일치하지 않는 경우 호스트 요소를 "*"로 바꿔 포트에 전송된 요청을 수락함을 나타낼 HttpListener 수 있습니다. 예를 들어 요청된 URI가 처리HttpListener되지 않을 때 포트 8080으로 전송된 모든 요청을 받으려면 접두사는 http://*:8080/입니다. 마찬가지로 포트에 전송된 HttpListener 모든 요청을 수락하도록 지정하려면 호스트 요소를 "+" 문자로 바꿉니다. 예: https://+:8080. "*" 및 "+" 문자는 경로를 포함하는 접두사에 있을 수 있습니다.

Wild카드 하위 기본 개체에서 관리 HttpListener 되는 URI 접두사에서 지원됩니다. wild카드 하위 기본 지정하려면 URI 접두사에서 호스트 이름의 일부로 "*" 문자를 사용합니다. 예: http://*.foo.com/. 메서드에 인수로 전달합니다 Add .

Warning

최상위 와일드카드 바인딩(http://*:8080/http://+:8080)을 사용하면 안 됩니다. 최상위 와일드카드 바인딩은 보안 취약점에 앱을 노출시킬 수 있습니다. 강력한 와일드카드와 약한 와일드카드 모두에 적용됩니다. 와일드카드보다는 명시적 호스트 이름을 사용합니다. 전체 부모 도메인을 제어하는 경우 하위 도메인 와일드카드 바인딩(예: *.mysub.com)에는 이러한 보안 위험이 없습니다(취약한 *.com과 반대임). 자세한 내용은 rfc7230 섹션-5.4를 참조하세요.

클라이언트의 요청 수신 대기를 시작하려면 컬렉션에 URI 접두사를 추가하고 메서드를 호출합니다 Start . HttpListener 는 클라이언트 요청을 처리하기 위한 동기 모델과 비동기 모델을 모두 제공합니다. 요청 및 관련 응답은 메서드 또는 해당 비동기 대응 개체, BeginGetContext 메서드에서 EndGetContext 반환 GetContext 된 개체를 사용하여 HttpListenerContext 액세스합니다.

모델은 동기 모델과 클라이언트 요청을 대기 하는 동안 애플리케이션을 차단 하 고 한 번에 하나의 요청을 처리 하려는 경우 적합 합니다. 동기 모델을 사용하여 클라이언트가 GetContext 요청을 보낼 때까지 기다리는 메서드를 호출합니다. 이 메서드는 개체가 HttpListenerContext 발생할 때 처리를 위해 개체를 반환합니다.

더 복잡 한 비동기 모델에서 애플리케이션의 실행 스레드에서 자체 처리 되는 요청 및 각 요청을 기다리는 동안 차단 하지 않습니다. 사용 된 BeginGetContext 들어오는 각 요청에 대해 호출 되는 애플리케이션 정의 메서드를 지정 하는 방법입니다. 해당 메서드 내에서 메서드를 EndGetContext 호출하여 요청을 가져오고, 처리하고, 응답합니다.

두 모델에서 들어오는 요청은 속성을 사용하여 HttpListenerContext.Request 액세스되고 개체로 HttpListenerRequest 표시됩니다. 마찬가지로 응답은 속성을 사용하여 HttpListenerContext.Response 액세스되고 개체로 HttpListenerResponse 표시됩니다. 이러한 개체는 일부 기능을 및 개체와 HttpWebRequestHttpWebResponse 공유하지만 후자의 개체는 서버가 아닌 클라이언트 동작을 구현하기 때문에 함께 HttpListener 사용할 수 없습니다.

클라이언트 인증이 HttpListener 필요할 수 있습니다. 인증에 사용할 특정 체계를 지정하거나 사용할 스키마를 결정하는 대리자를 지정할 수 있습니다. 클라이언트의 ID에 대한 정보를 얻으려면 어떤 형태의 인증이 필요합니다. 자세한 내용은 , AuthenticationSchemesAuthenticationSchemeSelectorDelegate 속성을 참조User하세요.

참고 항목

using https를 HttpListener 만드는 경우 해당 수신기에 대한 서버 인증서를 선택해야 합니다. 그렇지 않으면 연결이 예기치 않게 닫히면 이에 HttpListener 대한 요청이 실패합니다.

참고 항목

네트워크 셸(netsh.exe)을 사용하여 서버 인증서 및 기타 수신기 옵션을 구성할 수 있습니다. 자세한 내용은 네트워크 셸(Netsh)을 참조하세요. 실행 파일은 Windows Server 2008 및 Windows Vista와 함께 배송되기 시작했습니다.

참고 항목

여러 인증 체계를 HttpListener지정하는 경우 수신기는 클라이언트에 다음 순서DigestNegotiateNTLMBasic로 이의를 제기합니다.

HTTP.sys

클래스는 HttpListener Windows에 HTTP.sys대한 모든 HTTP 트래픽을 처리하는 커널 모드 수신기인 맨 위에 빌드됩니다. HTTP.sys 는 연결 관리, 대역폭 제한 및 웹 서버 로깅을 제공합니다. HttpCfg.exe 도구를 사용하여 SSL 인증서를 추가합니다.