13

当我尝试使用“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.'.

4

5 回答 5

15

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

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

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

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

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

这解决了我的问题,服务运行良好。我希望这可能有助于阐明您的问题。我不能确定,但​​这可能是因为我在开发笔记本电脑上安装各种软件包的顺序。

于 2009-02-24T15:51:00.580 回答
1

If installing compenonts doesnt work try a repair, this uninstalls and then installs.

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r
于 2011-03-19T10:55:24.500 回答
0

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

干杯!

于 2010-06-15T09:02:23.087 回答
0

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

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

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


<service name="blah" behaviorConfiguration="serviceBehavior">
于 2008-10-09T22:34:48.090 回答
0

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

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

于 2008-10-13T15:52:40.027 回答