2010-02-25 134 views
3

我已經做了一個WCF服務。我希望它的客戶能夠從任何地方訪問它。我怎樣才能做到這一點? 詳情:通過互聯網可以訪問WCF服務

  • 我希望它在Windows 過程中被託管,而不是一個網站。
  • 我正在使用TCP綁定。
  • 我不知道網絡託管等,幾乎所有的東西
  • 這是希望不使用IIS ...

我在網上發現了許多建議,但還是不明白,所有的東西。請告訴我如何詳細...

據我所知,有必要爲端點做一個全局。我在我的路由器上配置了端口轉發到8000端口,但是..還有什麼?我應該輸入哪個地址作爲端點地址?現在是localhost:8000。

回答

3

您將需要一個公共IP地址或域名,如上面所建議的。看看你是否已經擁有了它,如果沒有按照上面的建議進行設置。

爲了您的WCF主機和客戶端,您將需要端點看起來像這樣:

  • 主持人:的net.tcp://本地主機:端口/服務名稱
  • 客戶:的net.tcp:// publicipORdomainname:portnum/servicename

您需要確保您的路由器將端口路由到主機PC。從這個問題聽起來像你做得對。由於主機是本地的,您不必更改端點以使用公共IP或域名。客戶端需要將呼叫解析到駐留在遠程地址上的主機,因此需要可尋址的公共IP。

1

你不需要IIS,你可以自己託管,它可以通過互聯網訪問。

基本上,當你自己託管一個WCF應用程序時,它是一個服務器(就像一個Web服務器,如Apache或IIS)。

這是一個很好的網站,討論如何將自己的服務器暴露給互聯網。

http://www.diywebserver.com/

請記住,你可以跳過這與設置Apache做任何部件,因爲你已經有一臺服務器(你的WCF應用程序)。

0

您需要擁有公共IP和域名。我會建議爲您的服務租用一個虛擬服務器並將其託管在Windows服務中。

0

你不應該託管本地主機:8000,因爲這隻能在本地機器上訪問。端口轉發不起作用。

而是使用機器網絡名稱或LAN IP。

0

如果你的服務是運行在IIS上沒有那麼任何問題,你需要做以下步驟,通過互聯網

假設訪問此服務:

我的解決方案名稱爲SearchServiceLibrary

接口名稱爲ISearch

類名稱是搜索和這個類實現ISEARCH接口

第1步: 如果你的PC是在NAT後面,你需要轉發PORT告訴你的路由器,它應該發送接收到的請求爲Web服務。

步驟2:要指定域名/在WSDL文件服務器的IP地址

更新或編輯繼app.config文件標記

<serviceMetadata httpGetEnabled="True" httpGetUrl="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic"/> 

步驟3: Set Soap Location in app.config file

您需要在您的app.config文件添加一個終點,你可以使用選項編輯WCF CONFIGURATIONS

<service name="SearchServiceLibrary.Search"> 
       <endpoint address="http://DomainName_OR_IPAddress:PORT/SearchServiceLibrary.Search.svc/basic" binding="basicHttpBinding" 
      contract="SearchServiceLibrary.ISearch"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
    </endpoint> 

或使用選項編輯WCF CONFIGURATIONS

enter image description here描述性地做這個或者 這對我來說非常合適。