使用WCFTestClient测试简单WCF Web服务的WCF错误

时间:2008-10-09 22:26:08

标签: wcf using wcftestclient

当我尝试使用“wcftestclient”测试AutoLotWCFService时,出现以下错误。我究竟做错了什么?任何见解都会有所帮助这是一个简单的Web服务,它具有带接口契约的wshttpbinding和服务中的实现。以下是长错误消息:Web.Config文件有2个端点 - 一个用于Web服务本身,另一个用于metaDataExchange。它几乎都是默认的东西。如果需要,我可以包含代码 - 似乎我不能在这里附加文件。


Error: Cannot obtain Metadata from http://localhost/AutoLotWCFService/Service.svc
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.  
For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.
WS-Metadata Exchange Error
    URI: http://localhost/AutoLotWCFService/Service.svc
    Metadata contains a reference that cannot be resolved: 'http://localhost/AutoLotWCFService/Service.svc'.
    The remote server returned an unexpected response: (405) Method not allowed.
    The remote server returned an error: (405) Method Not Allowed.
    HTTP GET Error    URI: http://localhost/AutoLotWCFService/Service.svc
    The document at the url http://localhost/AutoLotWCFService/Service.svc was not recognized as a known document type.The error message from each known type may help you fix the problem:
    - Report from 'DISCO Document' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'.
    - Report from 'WSDL Document' is 'There is an error in XML document (1, 2).' -Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.
    - Report from 'XML Schema' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'.

5 个答案:

答案 0 :(得分:15)

我最近在尝试在IIS7下的Windows Vista笔记本电脑上托管WCF时遇到了这个问题。

我首先收到以下错误:“HTTP错误404.3 - 未找到”,其中一个建议的解决方案是“确保映射当前页面的预期处理程序。”

所以我手动为.svc文件添加了一个处理程序,并将其定义为DiscoveryRequestHandler,认为这可能有所帮助。这导致了您上面描述的问题。

实际的解决方法是删除我添加的处理程序,并运行以下命令:

CD c:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
ServiceModelReg -i

这解决了我的问题,服务运行正常。我希望这可能有助于解决你的问题。我无法确定,但这可能是因为我在开发笔记本电脑上安装各种软件包的顺序。

答案 1 :(得分:1)

如果安装组件不起作用,请尝试修复,这将卸载然后安装。

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r

答案 2 :(得分:0)

您需要确保服务行为配置启用具有httpGetEnabled =“true”的元数据标签

<serviceBehaviors>
  <behavior name="serviceBehavior">
    <serviceMetadata httpGetEnabled="true">
  </behavior>
</serviceBehaviors>

此外,请确保您的服务引用该行为。


<service name="blah" behaviorConfiguration="serviceBehavior">

答案 3 :(得分:0)

感谢;信不信由你用aspnet-regiis在IIS中重新注册ASPNET时,解决了至少通过wcftestclient加载服务的问题。

下一个问题是能够通过wcftestclient调用服务公开的方法。我必须处理哪些安全问题?我必须使用Windows身份验证启用匿名登录。并且仍然调用生成的异常指向与访问冲突相关的内容。在搜索某些东西时指向安装证书以便能够调用..如果可能请指教。

答案 4 :(得分:0)

尝试检查服务标记(右键单击servicename.svc)中的服务(名称)是否与web.config文件中的服务(名称)匹配。

干杯!