WCF: Сеть. TCP несколько привязки, тот же порт, различные IP-адреса

intersect ожидает два полигона в качестве своих параметров, но вы задаете ему точку, поэтому отсутствует свойство length:

Принимает два полигона и находит их пересечение

blockquote>

Вместо этого попробуйте turf.booleanWithin(theMarker.toGeoJSON(), layer.toGeoJSON()) :

Boolean-Within возвращает true, если первая геометрия полностью находится во второй геометрии.

BLOCKQUOTE>

9
задан Mel Green 31 March 2009 в 21:05
поделиться

2 ответа

Спасибо за информацию Corazza!

Я выяснил, как выполнить это. Я шел об этом всем неправильном пути.

Моя конечная цель должна была иметь сервис, слушающий на каждом IP-адресе, доступном на машине. Попытка связать с каждым адресом индивидуально является неправильным способом сделать это.

Вместо этого я только должен был связать сервис с Именем хоста машины (не 'localhost'), и WCF автоматически слушает на всех адаптерах.

Вот исправленный код:

public static void StartHosts()
    {
        try
        {
            // Formulate the uri for this host
            string uri = string.Format(
                "net.tcp://{0}:{1}/ServerTasks",
                Dns.GetHostName(),
                ServerSettings.Instance.TCPListeningPort
            );

            // Create a new host
            ServiceHost host = new ServiceHost(typeof(ServerTasks), new Uri(uri));

            // Add the endpoint binding
            host.AddServiceEndpoint(
                typeof(ServerTasks),
                new NetTcpBinding(SecurityMode.Transport) 
                        { 
                            TransferMode = TransferMode.Streamed
                        },
                uri
            );

            // Add the meta data publishing
            var smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
            if (smb == null)
                smb = new ServiceMetadataBehavior();

            smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
            host.Description.Behaviors.Add(smb);

            host.AddServiceEndpoint(
                ServiceMetadataBehavior.MexContractName,
                MetadataExchangeBindings.CreateMexTcpBinding(),
                "net.tcp://localhost/ServerTasks/mex"
            );

            // Run the host
            host.Open();
        }
        catch (Exception exc)
        {
            DebugLogger.WriteException(exc);
        }
    }
10
ответ дан 4 December 2019 в 15:26
поделиться

Mel,

В то время как я никогда не пробовал это передо мной, вот некоторые образцы для рассмотрения этого, я услышал прежде. Можно хотеть создать объект привязки сначала и затем добавить тот же экземпляр к методу AddServiceEndpoint, просто мысль, таким образом, Вы не создаете новую привязку каждый раз, поскольку я не забываю читать где-нибудь, что netTCPBindings должен быть 1:1 отношения с адресом (даже при том, что Вы используете различные адреса).

Я не думаю, что необходимо волноваться о порте, совместно использующем как открытие нескольких портов.

Вот образец того, что можно хотеть выполнить с несколькими портами.

http://www.aspfree.com/c/a/Windows-Scripting/WCF-and-Bindings/2/

Вот хороший образец для использования portsharing на NetTcpBinding.

http://blogs.msdn.com/drnick/archive/2006/08/08/690333.aspx

- Bryan

2
ответ дан 4 December 2019 в 15:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: