2009-11-13 5 views
2

저는 앱을 만들고 있는데 웹 인터페이스를 제공해야합니다. WCF를 사용하여 웹 인터페이스에 대한 서비스를 제공하고 내 응용 프로그램 (IIS 없음)을 모두 자체 호스트로 생각했습니다. 이제 두 포트가 같은 포트를 사용하지 않으면 브라우저가 XSS에 대해 불평 할 것입니다 ...같은 포트에 자체 호스팅 웹 서버 (HTTPListener)가있는 자체 호스팅 WCF. 가능한?

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

수정 일부 조사를 마친 후 작동하도록했습니다. 여기

는 웹 서비스 자체 호스트 코드입니다 :

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(); 
    /* ... */ 
} 

웹 서비스가 작동하려면, 나는 this

답변

3

예 - 잘 작동합니다. HTTP.SYS는 WCF가 사용하는 HTTP 항목을 추상화하고, 다른 경로 접두사를 모두 사용하는 한 임의의 수의 프로세스가 동일한 포트를 공유하도록 허용합니다. 나는 정확히 같은 이유로이 모든 일을합니다.

IIS 5.1 또는 VS 웹 서버에서는 XP에서 작동하지 않습니다. 단지 시도 할 경우를 대비하여. 그들은 HTTP.SYS 기반이 아니기 때문에 독점적으로 포트를 확보하려고합니다. 하지만 (WCF 호스트가 2 개인 XP를 포함하여) 다른 것, 당신은 잘 할 수 있습니다.

+0

그 예가 있습니까? 나는 무언가를 시도했지만 효과가 없었다. 두 번째로 시작된 것은 무엇이든간에 (wcf 또는 웹 서버) 불평을했습니다 ... – subb

+0

어떤 웹 서버를 사용하고 있습니까? HTTP.SYS (IIS6 + 또는 HttpListener 등)를 기반으로해야하며 IIS에서 가져 오지 못한 URI 경로를 사용하여 서비스를 구성해야합니다 (예 : 수신 대기/수신 할 수 없음)./Services/Foo 등). – nitzmahone

+0

제대로 작동합니다. 코드를 메인 포스트에 추가하겠습니다. – subb

-1

공상 소리 할 필요가 , 나는 이것을보아야 할 것이다. 작동하지 않으면 두 개의 별도 포트로 유지할 수 있지만 역방향 프록시를 사용하여 WCF 끝점을 정렬 할 수 있습니까?

관련 문제