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


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

    在IE下访问地址是可以看到的!!!!!!

    但是在项目下添加服务引用时出现了下面的错误

    理解了文档内容,但无法进行处理。   - 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用户,授权即可。

    C://Windows/Temp  文件夹右键属性,安全,找到IIS_USER用户,编辑,权限给上,确认。

    回来添加测试 OK!!!!

  • 相关阅读:
    网页定位导航特效
    学习笔记(一) HTML+CSS基础课程
    《javascript dom编程艺术》笔记(二)——美术馆示例
    《javascript dom编程艺术》笔记(一)——优雅降级、向后兼容、多个函数绑定onload函数
    javascript之事件处理
    将Emmet安装到到 Sublime text 3?
    如何将Emmet安装到到 Sublime text 3?
    Web前端研发工程师编程能力飞升之路
    childNodes 节点数量问题说明
    gerrit + ldap + phpldapadmin docker部署
  • 原文地址:https://www.cnblogs.com/yuanye0918/p/3529546.html
Copyright © 2020-2023  润新知