我已經使用如何開始使用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>
我要去哪裏錯了?
不'Open'引發任何異常? –
我會嘗試明確指定服務端點以及MEX端點的完整地址 - 在''標籤的地址='屬性中。 –
我已經包裝在try/catch中打開並且沒有例外。我會查看完整的地址=但另一個想法..我要嘗試在另一臺機器上部署庫存標準MS示例,看看是否可行 – andrew