排查 Visual Studio 中的 Windows Communication Foundation (WCF) 或 WCF Data Services 引用问题
适用于: Visual Studio
本文列出了在 Visual Studio 中使用 Windows Communication Foundation (WCF) 或WCF 数据服务时可能出现的常见问题的解决方案。
如果要更新或删除服务引用,请参阅 “添加”、“更新”或删除 WCF 数据服务引用。
未提供服务地址时出错
选择无地址的 Go 按钮时,可能会看到一条错误消息,指出“请输入服务的地址”。若要解决此问题,请标识服务的地址并输入它。
- 如果是解决方案中的服务,则可以使用“发现”按钮查找并选择,然后再次尝试“Go”按钮。
- 如果是 Internet 上某个位置托管的服务,请按照添加 WCF 服务引用中的说明进行添加。
从服务返回数据时出错
从服务返回 DataSet
或 DataTable
时,可能会收到“已超出传入消息的最大大小配额”异常。 默认情况下,某些绑定的 MaxReceivedMessageSize
属性设置为相对较小的值,以限制遭受拒绝服务攻击的程度。 可以增大此值以防止发生异常。 有关详细信息,请参阅 MaxReceivedMessageSize。
修复此错误的方法:
- 在“解决方案资源管理器”中,双击“app.config”文件将其打开。
- 找到
MaxReceivedMessageSize
属性,并将其更改为更大的值。
在解决方案中找不到服务
在“添加服务引用”对话框中选择“发现”按钮时,解决方案中的一个或多个 WCF 服务库项目不会显示在服务列表中。 如果服务库已添加到解决方案但尚未编译,则可能会出现此问题。
修复此错误的方法:
- 在“解决方案资源管理器”中,右键单击“WCF 服务库”项目。
- 选择“生成”。
通过远程桌面访问服务时出错
当用户通过远程桌面连接访问 Web 托管的 WCF 服务并且用户没有管理权限时,将使用 NTLM 身份验证。 如果用户没有管理权限,则用户可能会收到以下错误消息:“HTTP 请求未授权使用客户端身份验证方案”Anonymous”。 从服务器收到的身份验证标头为‘NTLM’。”
修复此错误的方法:
- 在网站项目中,打开“属性”页。
- 在“启动选项”选项卡上,清除“NTLM 身份验证”复选框” 。
注意
应只对专门包含 WCF 服务的网站禁用 NTLM 身份验证。 WCF 服务的安全性通过“web.config”文件中的配置来管理。 所以也可不使用 NTLM 身份验证。
生成的类设置的访问级别不起作用
在“配置服务引用”对话框中将生成的类的访问级别选项设置为“内部”或“朋友”这一操作可能并不总是有效 。 即使在对话框中设置了该选项,也会生成访问级别为 Public
的支持类。 这是某些类型的已知限制,例如使用 XmlSerializer 序列化的类型。
调试服务代码时出错
当你从客户端代码单步执行到 WCF 服务的代码时,可能会收到与缺少符号相关的错误。 当解决方案中已移动或删除属于解决方案的服务时,可能会出现此情况。
首次添加对当前解决方案中的某一 WCF 服务的引用时,服务项目和服务客户端项目之间会添加显式生成依赖项。 这可确保客户端始终访问最新的服务二进制文件,这对调试方案(例如从客户端代码单步执行到服务代码)尤其重要。
如果从解决方案中删除服务项目,则此显式生成依赖项将失效。 Visual Studio 不再保证在必要时重新生成服务项目。
若要修复此错误,请手动重新生成服务项目:
- 在“工具”菜单上选择“选项” 。
- 在“选项”对话框中,展开“项目和解决方案”,然后选择“常规” 。
- 确保 选中了“显示高级生成配置 ”复选框,然后选择“ 确定”。
- 加载 WCF 服务项目。
- 从“Configuration Manager”对话框中,将“活动解决方案配置”设置为“调试” 。 有关详细信息,请参阅如何:创建和编辑配置。
- 在“解决方案资源管理器”中,选择 WCF 服务项目。
- 在“生成”菜单上,选择“重新生成”以重新生成 WCF 服务项目。
WCF 数据服务不显示在浏览器中
当它尝试查看 WCF Data Service 中数据的 XML 表示形式时,Internet Explorer 可能会将数据错误解释为 RSS 源。 确保已禁用显示 RSS 源的选项。
若要修复此错误,请禁用 RSS 源:
- 在 Internet Explorer 的 “工具” 菜单上,选择“ Internet 选项”。
- 在 “内容 ”选项卡上的“ 源 ”部分中,选择“ 设置”。
- 在 “源设置” 对话框中,清除 “打开源阅读视图 ”复选框,然后选择“ 确定”。
- 选择“确定”关闭“Internet 选项”对话框。