即使我看到有其他類似的東西,但我會發布這個問題。然而,我無法找到令人滿意的解決方案,爲什麼我得到這個錯誤,也沒有如何解決它。錯誤:在WCF測試客戶端不支持,因爲它使用類型System.Threading.Tasks
因此,今天我不得不在我的本地計算機上託管一項服務用於測試目的。該服務是一個單一的WCF服務解決方案,據我所知長久以來它一直在工作。然而,當我下載了該項目,並嘗試舉辦我的本地機器上的服務,我從標題錯誤:
該操作未在WCF測試客戶端支持,因爲它使用類型的System.Threading
所以當我回到家時,我決定使用一些異步方法進行一項服務,並深入到底層。然而,當我在任何地方都沒有使用(或者至少看起來是這樣)System.Threading.Tasks
這個幾乎空的項目上得到這個完全相同的錯誤時,我真的很驚訝。
所以我做了什麼:
- 創建新
WCF Service
使用Visual Studio 2013的默認模板 - 左默認
IService1.cs
文件和Service1.svc
改變了
IService1.cs
到:using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace WcfService { [ServiceContract] public interface IService1 { [OperationContract] int GetEmpId(int id); } }
將
Service1.svc
更改爲:using System; using System.Collections.Generic;使用System.Linq的 ; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text;
命名空間WcfService { 公共類服務:IService1 { 公衆詮釋GetEmpId(INT ID){ 回報 ID; }} }
後又離開它看起來像這樣的默認web.config
:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
我還沒有嘗試過使用Task
,Threading
或類似的東西,只是希望看到我的服務已啓動並正在運行,因此我可以開始添加內容並查看我何時會得到該錯誤,但在將Service1.svc
設置爲我的啓動後,我感到驚訝類和嘗試運行我得到了同樣的錯誤項目:
此操作在WCF測試客戶端不支持,因爲它使用的類型系統。線程
好吧,現在我完全失去了。經過幾次嘗試運行我的項目後,我收到了這個錯誤。就在發佈這個問題之前,我再次嘗試,這次我沒有得到錯誤。事實上,我剛剛完成了我的客戶端,我可以使用GetEmpId()
方法。
那麼這裏發生了什麼。這是截圖,當我建我的項目:
我沒辦法GetEmpIdAsync()
。我還沒有嘗試添加它。它是怎麼來的呢不會多次構建,現在突然間我可以使用從一開始我實際實現的方法?
感謝您的解釋。這項服務是在多年前製作的,而我得到錯誤的事實讓我感到困惑,因爲我知道這項服務已經工作了很長時間。我不打算在異步模式下使用它,相反,我真的很想知道爲什麼MS會做出這樣的約定。至少對我來說,因爲我使用'WCF',很少看起來很奇怪和令人困惑。我想這是'Visual Studio'的新版本所帶來的......但是,再次感謝。 – Leron 2014-10-28 19:06:01
順便說一句,有沒有什麼方法可以「告訴」工具只查看同步方法,所以我不會收到這些消息? – Leron 2014-10-28 19:07:55
那個測試工具,我不這麼認爲。但是,如果您使用[SvcUtil](http://msdn.microsoft.com/en-us/library/aa347733(v = vs.110).aspx)來生成您的界面,您只需要關閉'/ async'或者如果您正在使用「添加服務引用」GUI,只需點擊「高級」,然後取消勾選「允許生成異步操作」(http://i.stack.imgur.com/GNsK0.png)「 – 2014-10-28 19:12:04