入门教程疑难解答
本主题列出使用“入门教程”时最常遇见的问题及其解决方法。
无法在硬盘上找到项目文件。
尝试运行服务应用程序时出现以下错误:HTTP 无法注册 URL http://+:8000/ServiceModelSamples/Service/。进程不具有此命名空间的访问权限。
尝试使用 Svcutil.exe 工具时出现以下错误:“svcutil”不是内部或外部命令,也不是可操作的程序或批处理文件。
无法找到由 Svcutil.exe 生成的 App.config 文件。
编译客户端应用程序期间出现以下错误:“CalculatorClient”不包含“<方法名称>”的定义,并且找不到可接受类型为“CalculatorClient”的第一个参数的扩展方法“<方法名称>”(是否缺少 using 指令或程序集引用?)
编译客户端应用程序期间出现以下错误:找不到类型或命名空间名称“CalculatorClient”(是否缺少 using 指令或程序集引用?)
运行客户端期间出现以下错误:未处理的异常: 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" />