入门教程疑难解答

本主题列出使用“入门教程”时最常遇见的问题及其解决方法。

  1. 无法在硬盘上找到项目文件。

  2. 尝试运行服务应用程序时出现以下错误:HTTP 无法注册 URL http://+:8000/ServiceModelSamples/Service/。进程不具有此命名空间的访问权限。

  3. 尝试使用 Svcutil.exe 工具时出现以下错误:“svcutil”不是内部或外部命令,也不是可操作的程序或批处理文件。

  4. 无法找到由 Svcutil.exe 生成的 App.config 文件。

  5. 编译客户端应用程序期间出现以下错误:“CalculatorClient”不包含“<方法名称>”的定义,并且找不到可接受类型为“CalculatorClient”的第一个参数的扩展方法“<方法名称>”(是否缺少 using 指令或程序集引用?)

  6. 编译客户端应用程序期间出现以下错误:找不到类型或命名空间名称“CalculatorClient”(是否缺少 using 指令或程序集引用?)

  7. 运行客户端期间出现以下错误:未处理的异常: System.ServiceModel.EndpointNotFoundException: 无法连接到 https://localhost:8000/ServiceModelSamples/Service/CalculatorService。TCP 错误代码 10061: 由于目标计算机主动拒绝,未能建立连接。

无法在硬盘上找到项目文件。

在 Windows Vista 和 Windows°7 中,Visual Studio 将项目文件保存在 c:\users\<用户名\Documents\Visual Studio 2010\Projects 下,对于 Windows 的早期版本,保存在 c:\Documents and Settings\<用户名>\My Documents\Visual Studio 2010\Projects 下。

尝试运行服务应用程序时出现以下错误:HTTP 无法注册 URL http://+:8000/ServiceModelSamples/Service/。进程不具有此命名空间的访问权限。

必须使用管理特权来运行承载 WCF 服务的进程。如果从 Visual Studio 2010 内运行服务,则必须以管理员身份运行 Visual Studio 2010。为此,请单击**“开始”,右击“Visual Studio 2010”,然后选择“以管理员身份运行”。如果从命令行提示符运行服务,则必须按类似方式以管理员身份启动命令行提示符。单击“开始”,右击“命令提示符”,然后选择“以管理员身份运行”**。

尝试使用 Svcutil.exe 工具时出现以下错误:“svcutil”不是内部或外部命令,也不是可操作的程序或批处理文件。

Svcutil.exe 必须位于系统路径中。最简单的解决方案是使用命令提示符。单击**“开始”,依次选择“所有程序”“Visual Studio 2010”“Visual Studio Tools”“Visual Studio 2010 命令提示”**。对于 Visual Studio 2010 中附带的所有工具,此命令提示均能将系统路径设置为正确的位置。

无法找到由 Svcutil.exe 生成的 App.config 文件。

默认情况下,“添加现有项”对话框仅显示具有以下扩展名的文件:.cs、.resx、.settings、.xsd 和 .wsdl。通过在“添加现有项”对话框右下角的下拉列表框中选择“所有文件(*.*)”,可以指定您希望查看所有文件类型。

编译客户端应用程序期间出现以下错误:“CalculatorClient”不包含“<方法名称>”的定义,并且找不到可接受类型为“CalculatorClient”的第一个参数的扩展方法“<方法名称>”(是否缺少 using 指令或程序集引用?)

仅向外界公开标记有 ServiceOperationAttribute 的那些方法。如果在 ICalculator 接口的某个方法中省略了 ServiceOperationAttribute 特性,则当所编译的客户端应用程序调用缺少该特性的操作时,便会收到此错误消息。

编译客户端应用程序期间出现以下错误:找不到类型或命名空间名称“CalculatorClient”(是否缺少 using 指令或程序集引用?)

如果未将 Proxy.cs 或 Proxy.vb 文件添加到客户端项目,则会收到此错误。

运行客户端期间出现以下错误:未处理的异常: System.ServiceModel.EndpointNotFoundException: 无法连接到 https://localhost:8000/ServiceModelSamples/Service/CalculatorService。TCP 错误代码 10061: 由于目标计算机主动拒绝,未能建立连接。

如果在未运行服务的情况下运行客户端应用程序,则会出现此错误。

未处理的异常: System.ServiceModel.Security.SecurityNegotiationException: 目标“https://localhost:8000/ServiceModelSamples/Service/CalculatorService”与“https://localhost:8000/ServiceModelSamples/Service/CalculatorService”的 SOAP 安全协商失败

此错误发生在已加入域但没有网络连接的计算机上。将计算机连接到网络,或者同时关闭客户端和服务的安全性。对于服务,将创建 WSHttpBinding 的代码修改为以下代码。

// Step 3 of the hosting procedure: Add a service endpoint
selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");

对于客户端,将 <binding> 元素下的 <security> 元素更改为以下内容:

<security mode="Node" />

另请参见

概念

WCF 疑难解答快速入门
安装问题疑难解答

其他资源

入门教程