2014-09-19 38 views
2

我已經定義爲WCF服務如下:不同的URL 7

<service name="MyService"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8080/ServiceContainer" /> 
     </baseAddresses> 
    </host> 
    <endpoint address="Service" binding="webHttpBinding" contract="IService" /> 
</service> 

我的服務實現以下合約:

[ServiceContract] 
public interface IService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "DoWork")] 
    void MyMethod(); 
} 

我託管WCF服務爲Windows服務,使用WebServiceHost

主機上XP我呼籲URI操作:

http://myhost:8080/ServiceContainer/DoWork

(即基址/ URI模板)

主機上的Windows 7,同一個URI失敗(出現404錯誤)。但是,下面的URI成功:

http://myhost:8080/ServiceContainer/Service/DoWork

(即基址/ 端點地址/URI模板)

第二URI也適用於XP。調用服務的客戶端的操作系統沒有區別。

這兩種操作系統之間的行爲差​​異的原因是什麼?也許在Windows 7下更受限制的是UriTemplate?這是所有這些記錄的地方?


編輯:我也有Windows防火牆和防病毒掃描程序運行(我不能禁用)。但是,我沒有在他們的日誌中看到任何東西(例如pfirewall.log)以表明某些內容被阻止。

編輯2:添加以下URI保留允許服務要在Windows 7上使用,但並沒有影響上述行爲:

netsh http add http://+:8080/ user=\Everyone 
+0

在你的netsh行你輸入 「+:8000」,而不是 「+:8080」。 – Philm 2014-09-29 15:25:25

+0

XP和Win7的主要區別應該是「netsh http」所需的端口註冊。你確定,你在兩個版本中都使用相同的.NET版本嗎?也許WCF的改變。事實上,在您指定端點後,「服務/ DoWork」聽起來更加正確。但不幸的是,我不是這裏的專家。 – Philm 2014-09-29 15:30:41

+0

@Philm謝謝,我糾正了端口號。我將檢查.NET版本。我同意,Win7行爲似乎是正確的,並且更安全。也許是版本之間的錯誤修復? – 2014-09-30 07:30:25

回答

0

如果你有一個防火牆或防病毒您系統將其關閉並檢查它,404錯誤非常普遍。

檢查這個URL

http://myhost:80/ServiceContainer/DoWork