共用方式為


Windows Communication Foundation 新手教學課程的疑難排解

本文針對您遵循 Windows Communication Foundation 應用程式新手教學課程的步驟操作時,可能遇到的最常見問題和錯誤,提供解決方案。

常見問題

我在硬碟中找不到專案檔。

Visual Studio 會將專案檔儲存在 C:\Users\<user name>\source\repos

我找不到 Svcutil.exe 產生的 App.config 檔案。

根據預設,Visual Studio 的 [新增現有項目] 視窗只會顯示具有下列副檔名的檔案:

  • .cs
  • .resx
  • .settings
  • .xsd
  • .wsdl

若要顯示所有檔案類型,請在 [新增現有專案] 視窗右下角的下拉式清單中選取 [所有檔案 (*.*)]。

常見錯誤

編譯服務應用程式

在 'GettingStartedHost.Module1' 中找不到錯誤 BC30420 'Sub Main'。

Visual Basic 應用程式的進入點不正確。 請執行下列變更:

  1. 在 [方案總管] 視窗中,選取 [GettingStartedHost] 資料夾,然後從捷徑功能表中選取 [屬性]。 a. 在 [GettingStartedHost] 視窗,從清單中為 [啟動物件] 選取 [Service.Program] (或特定應用程式的進入點)。 b. 從主功能表中,選取 [檔案] > [全部儲存]。

執行服務應用程式

HTTP 無法註冊 URL 'http://+:8000/GettingStarted/CalculatorService'。 您的處理程序沒有足夠的存取權可存取此命名空間。

若要獲得適當的存取權,請使用系統管理權限啟動程序來裝載 Windows Communication Foundation (WCF) 服務:

  • 如為 Visual Studio:請在 [開始] 功能表中選取 Visual Studio 程式,然後從捷徑功能表中選取 [更多] > [以系統管理員身分執行]。
  • 如為主控台視窗:請在 [開始] 功能表中選取 [命令提示字元],然後從捷徑功能表中選取 [更多] > [以系統管理員身分執行]。
  • 如為 Windows Explorer:請選取可執行檔,然後從捷徑功能表中選取 [以系統管理員身分執行]。

編譯用戶端應用程式

'CalculatorClient' 不包含 '<method name>' 的定義,也找不到擴充方法 '<method name>' 來接受型別 'CalculatorClient' 的第一個引數 (您是否遺漏 using 指示詞或組件參考?)

只有標記 ServiceOperationAttribute 屬性方法會公開。 如果您在 ICalculator 介面省略方法的 ServiceOperationAttribute 屬性,就會在編譯期間收到此錯誤訊息。

找不到型別或命名空間名稱 'CalculatorClient' (您是否遺漏 using 指示詞或組件參考?)

如果您在使用「Svcutil.exe」工具產生「generatedProxy.cs」(或「generatedProxy.vb」) 檔案時,未將它們新增至用戶端專案,就會收到此錯誤。

執行用戶端應用程式

未處理的例外狀況:System.ServiceModel.EndpointNotFoundException:無法連線到 'http://localhost:8000/GettingStarted/CalculatorService'。 TCP 錯誤碼 10061: 無法連線,因為目標電腦主動拒絕連線。

如果執行用戶端應用程式時沒有先啟動服務,就會發生這個錯誤。 請先執行主應用程式以啟動服務,然後再執行用戶端應用程式。

使用 Svcutil.exe 工具

'Svcutil' 並未經辨識為內部或外部命令、可執行程式或批次檔案。

「Svcutil.exe」必須位於系統路徑。 最簡單的解決方案是使用 Visual Studio 命令提示字元。 從 [開始] 功能表,選取 [Visual Studio 版本<>] 目錄,然後選取 [VS 版本<> 開發人員命令提示字元]。 此命令提示字元會針對 Visual Studio 傳遞的所有工具,將系統路徑設為正確位置。

執行服務和用戶端應用程式

System.ServiceModel.Security.SecurityNegotiationException:目標 'http://localhost:8000/GettingStarted/CalculatorService' 與 'http://localhost:8000/GettingStarted/CalculatorService' 進行 SOAP 安全性交涉失敗

如果電腦已加入網域卻沒有網路連接,就會發生這個錯誤。 請將您的電腦連接至網路,或是將服務與用戶端兩者的安全性都關閉。

若要關閉安全性:

  • 針對服務,請將建立 WSHttpBinding 的程式碼取代為下列程式碼:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • 針對用戶端,請在組態檔中,將 <binding> 元素中的 <security> 元素更新如下:

    <binding name="WSHttpBinding_ICalculator">
      <security mode="None" />
    </binding>
    

另請參閱

開始使用 WCF 應用程式
WCF 疑難排解快速入門
疑難排解安裝問題