2009-11-13 1 views
2

Я работаю над приложением, и мне нужно предоставить ему веб-интерфейс. Я думал об использовании WCF для предоставления услуги для веб-интерфейса и для самостоятельного подключения к моему приложению (без IIS). Теперь, если эти два не используют один и тот же порт, браузер будет жаловаться на XSS ...Самостоятельный хостинг WCF с самообслуживанием WebServer (HTTPListener) на одном и том же порту. Возможное?

Возможно ли это? Это хорошая идея?

EDIT После некоторого расследования мне удалось заставить его работать.

Вот вебсервис себя хост-код:

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

Yep- работает хорошо. HTTP.SYS абстрагирует HTTP-материал, который использует WCF, и позволяет произвольному количеству процессов совместно использовать один и тот же порт, если все они используют разные префиксы пути. Я делаю это все время по той же причине.

Это не будет работать на XP в IIS 5.1 или на веб-сервере VS, хотя на всякий случай вы собираетесь попробовать. Они не основаны на HTTP.SYS, поэтому они ожидают получить свои порты исключительно. Что-нибудь еще, хотя (включая XP с 2 хостами WCF), вам хорошо идти.

+0

У вас есть пример? Я что-то пробовал, но это не сработало. Какой бы ни был запущен второй (wcf или webserver), жаловался ... – subb

+0

Какой веб-сервер вы используете? Он должен быть основан на HTTP.SYS (IIS6 + или HttpListener и т. Д.), И ваша служба должна быть настроена с использованием пути URI, который IIS не захватил (т. Е. Вы не можете слушать в /, он должен будет be/Services/Foo или что-то еще). – nitzmahone

+0

Получил работу. Я добавлю код на главный пост. – subb

-1

Звуки фантазии , Я должен буду посмотреть это. Если ничего не работает, вы можете сохранить его как два отдельных порта, но затем, возможно, использовать обратный прокси для сортировки конечной точки WCF?

Смежные вопросы