У меня есть опубликованная служба WCF в корневом каталоге (VPS, IIS 7). В нем есть Service1.svc
файл и web.config
файл.
Я хотел бы опубликовать другую службу WCF в том же IIS во вложенной папке (предположим, что имя вложенной папки - subservice2
). Эта другая служба WCF также имеет файлы Service2.svc
и web.config
.
Куда мне поместить файлы второй службы WCF, чтобы она работала правильно?
Нужно ли мне устанавливать или изменять какие-либо настройки в IIS?
Моя первая попытка заключалась в том, чтобы просто создать подпапку subservice2
и поместить туда все файлы второй службы WCF, но это не сработало (я получаю Server Error in '/' Application.
, если пытаюсь получить доступ к mysiteaddress/subservice2/Service2.svc
).
2 ответа
У вас есть несколько вариантов.
- Объедините две конечные точки .svc в один проект, обновите конфигурации конечных точек в web.config, а затем разверните их вместе. Это может быть невозможно, если два проекта имеют отдельные графики развертывания или обслуживания.
- Поскольку web.configs наследуются внутри одного и того же веб-приложения в IIS, вы можете потратить значительное время, пытаясь сгладить все конфликты конфигурации. Это возможно, но это запутанно и сложно.
- Создайте новый веб-сайт в IIS и используйте заголовки узлов для направления трафика на нужный сайт. Разверните новую службу на новом сайте. Это также может иметь проблемы с конфигурацией, если вы планируете использовать SSL. Если вы не используете сертификат с подстановочными знаками, комбинация IP и порта должна быть уникальной.
Вариант №1 - лучшее решение, если вы можете преодолеть слияние проектов.
Почему бы просто не привязать сервисы к разным портам? Программно это эквивалентно:
ServiceHost host = new ServiceHost(typeof(MyService));
Binding wsBinding = new WSHttpBinding( );
Binding tcpBinding = new NetTcpBinding( );
host.AddServiceEndpoint(typeof(IMyContract),wsBinding,
"http://localhost:8000/MyService");
host.AddServiceEndpoint(typeof(IMyContract),tcpBinding,
"net.tcp://localhost:8001/MyService");
host.Open();
ServiceHost OtherHost = new ServiceHost(typeof(MyOtherService));
Binding wsBinding2 = new WSHttpBinding( );
OtherHost.AddServiceEndpoint(typeof(IMyOtherContract),wsBinding2,
"http://localhost:8002/MyOtherService");
OtherHost.Open();
http://tutorials.csharp-online.net/WCF_Essentials%E2%80%94Programmatic_Endpoint_Configuration
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.