동일한 포트에 자체 호스팅 웹 서버 (httplistener)가있는 자체 호스팅 WCF. 가능한?

StackOverflow https://stackoverflow.com/questions/1732115

  •  20-09-2019
  •  | 
  •  

문제

앱을 작업 중이며 웹 인터페이스를 제공해야합니다. WCF를 사용하여 웹 인터페이스에 서비스를 제공하고 내 앱 (IIS 없음)과 함께 자체 주최에 대해 생각하고있었습니다. 이제 두 사람이 동일한 포트를 사용하지 않으면 브라우저는 XSS에 대해 불평합니다 ...

이게 가능해? 이것이 좋은 생각입니까?

편집하다약간의 조사 후, 나는 그것을 작동시킬 수있었습니다.

다음은 WebService 셀프 호스트 코드입니다.

var serviceHost = new ServiceHost(typeof(CalculatorService));
serviceHost.AddServiceEndpoint(typeof (ICalculator), new WSHttpBinding(), "http://localhost:8000/webservice");
serviceHost.Open();

Console.WriteLine("CalcService is running.");
Console.WriteLine("Press Enter to terminate the service.");
Console.ReadLine();
serviceHost.Close();

웹 호스트 코드는 다음과 같습니다.

var listener = new HttpListener();
listener.Prefixes.Add("http://localhost:8000/webconsole/");
listener.Start();
Console.WriteLine("listening");
while(true)
{
    HttpListenerContext context = listener.GetContext();
    /* ... */
}

웹 서비스가 작동하려면 이것

도움이 되었습니까?

해결책

예- 잘 작동합니다. http.sys는 WCF가 사용하는 HTTP 제품을 추상화하며, 다른 경로 접두사를 모두 사용하는 한 임의의 프로세스가 동일한 포트를 공유 할 수 있습니다. 나는 정확히 같은 이유로 항상 이것을한다.

이것은 IIS 5.1의 XP 또는 VS Webserver와 함께 작동하지 않습니다. 그들은 http.sys 기반이 아니므로 포트를 독점적으로 얻을 것으로 기대합니다. 그러나 다른 모든 것은 (2 개의 WCF 호스트가 포함 된 XP 포함), 당신은 가기에 좋습니다.

다른 팁

화려하게 들리겠습니다. 나는 이것을보아야 할 것이다. 다른 것이 작동하지 않으면 두 개의 별도 포트로 유지할 수 있지만 리버스 프록시를 사용하여 WCF 엔드 포인트를 분류 할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top