WCF 无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法

“无法从http://XXX/XXX.svc?wsdl获取元数据”错误的解决方法
    

昨天在用IIS部署一个WCF服务时,碰到了如下错误:

理解了文档内容,但无法进行处理。
- WSDL 文档包含无法解析的链接。
- 下载“http://admin-pc/IISHostService/Service1.svc?xsd=xsd0”时出错。
- 基础连接已经关闭: 接收时发生错误。
- 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。
- 远程主机强迫关闭了一个现有的连接。
元数据包含无法解析的引用:“http://admin-pc/IISHostService/Service1.svc?wsdl”。
元数据包含无法解析的引用:“http://admin-pc/IISHostService/Service1.svc?wsdl”。
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。

该错误是在使用svcutil生成client代码时报的错误,服务是部署在IIS7上,部署的过程都是完全教科书式的进行。服务也正常启动了,显示如下内容

已创建服务。

若要测试此服务,需要创建一个客户端,并将其用于调用该服务。可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作:

svcutil.exe http://leo-pc/IISHostService/Service1.svc?wsdl

按照提示直接用svcutil.exe http://admin-pc/IISHostService/Service1.svc?wsdl命令去生成代码,就出现了开头说的那个错误。而如果用visual studio的webdevserver启动,则一切正常。

经过一轮谷百之后,发现网上有很多类似的情况,有的说是因为用了wsHttpBinding协议引起的,或者是元数据没有正确公开,但都不是他们说的情况。后来找到了一篇文章,说的是添加WCF引用的一个陷阱。里面提到的情形跟我遇到的一致,原来问题出在权限,难怪用webdevserver可以很正常的运行。原来在下载http://admin-pc/IISHostService/Service1.svc?xsd=xsd0时的权限不足,在浏览器直接访问这个url会提示找不到页面。原因就是IIS进程的用户没有访问Windows\Temp目录的权限。找到Temp目录,然后找到IIS_USER用户,授权即可。

具体可参考:http://merill.net/2008/04/wcf-add-service-reference-gotcha-with-windows-server/

转自:http://www.cnblogs.com/shenba/archive/2012/01/06/2313932.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]:根据你提供的引用内容,问题中的URL(http://127.0.0.1:8384/)可能是一个本地主机地址,而且你在运行WCF程序时遇到了HTTP无法注册URL的问题。根据\[1\]中的描述,这个问题可能是由于进程没有访问权限导致的。解决这个问题的一种方法是以管理员身份运行Visual Studio。你可以右键点击Visual Studio的快捷方式,然后选择“以管理员身份运行”。这样做可能会解决你遇到的问题。 引用\[2\]:另外,你提到了一个关于SQL查询优化的问题。根据\[2\]和\[3\]的描述,你可以考虑将原来的IN语句改为EXISTS语句,或者使用两个表的联合查询来优化查询速度。这样做可以消除掉IN语句中查询结果集过大的问题,从而提高查询速度。 综上所述,你遇到的问题可能是由于进程没有访问权限导致的。你可以尝试以管理员身份运行Visual Studio来解决这个问题。另外,你还可以考虑使用优化的SQL查询语句来提高查询速度。希望这些解决方案对你有帮助。 #### 引用[.reference_title] - *1* [HTTP 无法注册 URL http://127.0.0.1:9999/calculatorservice/metadata。进程不具有此命名空间的访问权限.....](https://blog.csdn.net/weixin_30614587/article/details/96694329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [一条Sql查询语句的优化](https://blog.csdn.net/dielianhuan1546/article/details/101579148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值