2015-11-04 5 views
1

Сегодня я начал разбираться в WCF. Я взял в учебник по адресу https://msdn.microsoft.com/en-us/library/ms734712(v=vs.110).aspxWCF Базовый адрес, переопределенный App.config

Я прошел этот учебник до тех пор, пока вы не разместите хост службы. В разделе урока here мне было предложено запустить службу, а затем перейти к uri, указанному в коде. Когда я сделал это, мне отказали в моей связи. Через некоторое время я обнаружил, что базовый адрес был указан в app.config как нечто совсем другое. Переход к этому URI, за которым следует имя конечной точки, взял меня туда, куда я хотел пойти. Я не знаю, как этот адрес был сгенерирован, и на самом деле это не очень важно. Меня больше интересует, какая цель устанавливает базовый URI в сервисах, когда он, похоже, не имеет никакого эффекта, и фактический базовый URI, который используется, поступает из app.config. Это требуется конструктором типа ServiceHost ... поэтому вы считаете его важным. Может кто-то объяснить это мне?

ответ

1

Если вы внимательно посмотрите на два конструктора ServiceHost, которые ожидают Uris, параметр Uri имеет префикс params.

В C# это означает, что вы можете передать столько же Uris, сколько хотите, включая ноль.

Передача Uri интересна, если вы хотите использовать приложение app.config.

Если у вас нет конфигурации, вы передаете тип или объект и некоторый Uris.
Затем WCF создает службу, которая предоставляет все интерфейсы службы на всех Урисах.

Например, если вы ве получили два интерфейса в вас обслуживание и вы звоните:

var host = new ServiceHost(typeof(HelloService), 
         "net.tcp://localhost:7000/service1", 
         "net.pipe://localhost:8000/service1", 
         "http://localhost:9000/service1"); 

вы получите 2x3 подвергаются конечные точки

Большую часть времени ServiceHost построены без предоставления адреса.

Конфигурация выполнена в формате XML.

С уважением

+0

Мне было интересно, если это было в тех случаях, когда нет app.config. Похоже на то, что вы имеете в виду. –

+0

На самом деле вы можете сделать всю конфигурацию из чистого .net-кода без Xml. Вы также можете комбинировать подходы к созданию базовой конфигурации и некоторой динамической конфигурации –