我有一個託管在Windows服務中的WCF服務。 Windows服務有OnStart
方法是這樣的:在Windows服務中託管WCF服務的問題
protected override void OnStart(string[] args)
{
serviceHost = new ServiceHost(typeof (RouterService));
serviceHost.Open();
}
這是相當小了,因爲我試圖找到問題。由於我沒有在這裏進行任何錯誤處理,所以此時的任何異常都應該阻止服務正常啓動。它會開始,然後立即再次自動停止。
的WCF服務我的配置文件看起來是這樣的:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
<services>
<service name="WcfService.RouterService"
behaviorConfiguration="serviceBehavior" >
<endpoint address="RouterService" contract="WcfService.IRouterService" binding="wsHttpBinding" bindingConfiguration="NoSecurity" />
<endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000"/>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="NoSecurity">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior" >
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
此外,我已經添加了網絡服務用戶(誰的服務正在運行,以能夠在指定的端口監聽HTTP :現在
netsh http add urlacl url=http://+:8000/ user="NETWORK SERVICE"
,在客戶端,我選擇Add Service Reference
我能找到服務器,VS還可以管理創建配置,使代理文件,然後在客戶端裏面,我做代理的實例,並打開它,一切仍然正常,但在c代理第一種方法,我得到以下例外:
位於http://localhost:8000/RouterService的HTTP服務太忙了。
我知道,我的客戶是試圖連接到該服務的唯一的事情,所以爲什麼我得到這個錯誤信息呢?我該如何解決這個問題?它在嘗試調用方法時沒有超時,它幾乎立即拋出異常。
編輯
好了,現在我發現我的TESTSERVER(非Windows客戶端,而是一個控制檯應用程序)也給出了同樣的錯誤。今天早些時候它沒有,WCF服務或測試服務器都沒有改變。
然後我試着將端口更改爲8080而不是8000,並且工作正常。然後我試圖爲Windows服務相同,而且還曾
所以出事了HTTP上由於某種原因端口8000(運行新的端口上netsh http
命令後)。當然我也試過重新啓動系統。
這讓我感到困惑,所以如果任何人有任何想法在這裏發生了什麼,我將不勝感激。
你的服務返回什麼類型?我在服務中看到這個問題,返回無法序列化的類型。這也可能是服務主機的應用程序池無法啓動或類似的問題。 – Henric 2011-05-20 11:24:27
我同意@daft,由於序列化問題,該服務可能無法返回數據類型。應用程序池(如果適用)不應該擔心,因爲它是服務於wsdl/config的同一個池(至少在IIS中),它允許您生成代理類(您已成功完成該代理類)。 – Smudge202 2011-05-20 11:37:23
+1來澄清應用程序池問題。感謝塗抹。 – Henric 2011-05-20 11:40:33