簡體   English   中英

自托管WCF數據服務-指定要監聽的IP地址?

[英]Self Hosted WCF Data Service - Specify IP Address to Listen on?

我編寫了WCF數據服務,該服務自托管在Windows控制台應用程序中。

該服務使用以下代碼初始化:

static void Main(string[] args)
{
    DataServiceHost host;

    Uri[] BaseAddresses = new Uri[] { new Uri("http://12.34.56.78:9999")};

    using (host = new DataServiceHost( typeof( MyServerService ), BaseAddresses ) )
    {
        host.Open(); 
        Console.ReadLine();
    }
}

當我運行此命令時,控制台應用程序將運行並似乎在監聽0.0.0.0:9999,而不是在12.34.56.78:9999。

這是否意味着服務正在偵聽所有IP地址?

有沒有辦法讓我的服務僅偵聽指定的IP(12.34.56.67:9999)?

謝謝

要指定監聽IP,必須使用HostNameComparisonMode.Exact 例如,下面的代碼在NETSTAT中輸出以下內容:

C:\drop>netstat /a /p tcp

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    10.200.32.98:9999      Zeta2:0                LISTENING

來自代碼:

class Program
{
    static void Main(string[] args)
    {
        Uri[] BaseAddresses = new Uri[] { new Uri("http://10.200.32.98:9999") };
        using (var host = new ServiceHost(typeof(Service), BaseAddresses))
        {
            host.AddServiceEndpoint(typeof(Service), new BasicHttpBinding() { HostNameComparisonMode = HostNameComparisonMode.Exact }, "");

            host.Open();
            Console.ReadLine();
        }
    }
}

[ServiceContract]
class Service
{
    [OperationContract]
    public void doit()
    {
    }
}

從配置:

<basicHttpBinding>
    <binding name="yourBindingName" hostNameComparisonMode="Exact" />
</basicHttpBinding>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM