2012-12-03 34 views
1

我已經使用如何開始使用WCF工作的net.tcp使用Windows服務的主機綁定這個MSDN教程:WCF服務沒有非開發計算機上運行

http://msdn.microsoft.com/en-us/library/ff649818.aspx

我需要nettcp因爲的回調,並且不想將IIS用作主機。

本教程在我的計算機上運行100%,並且我使用自己的項目名稱和方法等完成了第二個版本,這也可以在我的計算機上運行100% - 無論是從VS2010運行還是使用InstallUtil時,作爲服務運行。

我下載朱瓦爾·洛的元數據瀏覽器,我的電腦上運行,這和它的發現服務。 (從www.idesign.net

我不能得到這個到另一臺計算機上工作 - 即生產服務器。我也試着在一臺備用電腦上安裝,看看這是否是一個服務器相關的問題。這些都不具有但是VS2010,因爲我正在作爲Windows服務,不應該的問題。

我複製了我的vs2010項目中的/bin/Release文件夾,並將其放在另一臺名爲myapp的文件夾中。我對服務exe文件(就像我做我的計算機上)運行InstallUtil,它安裝的罰款。我還更改了文件夾的權限以賦予NETWORK SERVICE完全權限。

我再啓動控制面板,管理服務,服務中的服務。我有日誌記錄到數據庫,並驗證服務進程啓動。我無法分辨WCF託管服務是否啓動。

在我的電腦,只要WCF託管服務開始我得到一個氣球通知和窗口,我可以看看看MEX地址等等。當我安裝到其他電腦不會出現這種情況。

我已經安裝在目標機器上朱瓦爾·洛的元數據瀏覽器,但它爲我做了我的電腦上使用完全相同的地址聲明無效地址(即參考本地主機沒有IP地址)。

我想,什麼是錯的,我的方法來安裝其他計算機上。

相關的代碼是:

if (myServiceHost != null) 
      myServiceHost.Close(); 

myServiceHost = new ServiceHost(typeof(MyAppService)); 
myServiceHost.Open(); 

app.config

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="netTCPBehavior" name="MyAppDll.MyAppDll"> 
     <endpoint 
      address="" 
      binding="netTcpBinding" bindingConfiguration="" 
      contract="MyAppDll.IMyAppDll"> 
     <identity> 
      <dns value="localhost" /> 
     </identity> 
     </endpoint> 
     <endpoint 
      address="mex" 
      binding="mexTcpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
       <add baseAddress="net.tcp://localhost:7200/MyAppDll" /> 
      </baseAddresses> 
     </host> 
     </endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="netTCPBehavior"> 
     <serviceMetadata httpGetEnabled="false" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

我要去哪裏錯了?

+0

不'Open'引發任何異常? –

+0

我會嘗試明確指定服務端點以及MEX端點的完整地址 - 在''標籤的地址='屬性中。 –

+0

我已經包裝在try/catch中打開並且沒有例外。我會查看完整的地址=但另一個想法..我要嘗試在另一臺機器上部署庫存標準MS示例,看看是否可行 – andrew

回答

0

您可能需要啓用Net.TCP Port Sharing Service

Windows通訊基礎(WCF) 使用Windows服務稱爲 Net.Tcp端口共享服務,以方便 的TCP端口 跨越多個進程共享。此 服務作爲WCF的一部分安裝, ,但該服務未啓用,默認爲 作爲安全預防措施,因此必須在首次使用 之前手動啓用服務 。

+0

我需要再等15個小時才能嘗試這個,但我認爲你可能是對的。 – andrew

+0

我已經這樣做了(它被禁用),但仍然無法正常工作。深入挖掘... – andrew

+0

我發現自己的測試項目不能100%正常工作,並且發佈了另一個問題。不過,我已將此標記爲答案,因爲我沒有打開端口共享 – andrew

相關問題