2012-02-02 111 views
10

任何人都可以告诉我为什么我在尝试添加我的服务时遇到此错误?WCF测试客户端无法添加服务,无法获取元数据

Error: Cannot obtain Metadata from http://myserver/myapp . 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://myserver/myapp Metadata contains a reference that cannot be resolved: ' http://myserver/myapp '. 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://myserver/myapp There was an error downloading ' http://myserver/myapp '. The request failed with HTTP status 403: Forbidden.

更新:我有以下的终结点已有,

<endpoint address="mex" 
      binding="mexHttpBinding" 
      name="Metadata" 
      contract="IMetadataExchange" /> 

我也有服务行为设置:

<serviceBehaviors> 
    <behavior name="myBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
+0

尝试关注我发布的链接中的视频。当我遇到同样的错误时,他们为我工作 – 2012-02-02 19:36:14

回答

5

我想通了。我在其中一个端点上使用了绝对路径,并且我拥有多个端点。我将它改为相对路径,然后一切正常。

此外,如果您的服务未运行并且可能与元数据无关,则可能会发生这种情况。如果你有ConfigurationErrorsException那么你也会看到这个结果。

我也试图将配置更改保存到项目中,然后它告诉我保存/覆盖/忽略等。它最终添加了“设计器”的项目子类型,并且一旦我移除它,它就返回正常工作。

0

如果添加元数据端点不是您的问题。进一步检查错误消息的详细信息。我有一个缺失的图书馆; “无法加载文件或程序集*”。

我需要改变的引用复制本地=真

0

我是新来的WCF和刚递给我里面WCF服务项目。 我在Win7上使用VS2010中的WCF测试客户端时遇到了类似的问题。在尝试本文和其他人的所有配置更改后,我仍然收到类似的错误。

所以我放弃了,开始阅读WCF。在这里我发现VS应该以管理员身份启动。这里的文章:Getting Started Tutorial WCF 原来,我必须启动VS2010与'以管理员身份运行'选中。这解决了这个问题,我能够在VS2010中测试WCF服务。我发布这个答案让其他人看起来以管理员身份运行。

7

当您尝试从某个函数返回自定义类对象并且该函数在类声明中没有[DataContract]属性时,也会发生这种情况。 WCF不知道你的返回类型是什么,所以它会抛出标准的消息。

[Serializable] 
[DataContract] 
public class ServiceResult 
{ 
    .... 
} 
+0

尽管通用消息指出它无法找到元数据,但我尝试删除一些OperationContracts并且它工作正常。原来,我有一个从Dictionary继承的DataMember,导致这个问题。谢谢。 – Andrew 2016-04-01 15:01:49

+0

+ 5000从我,感谢您的解决方案: 其实我在我的实体类中只有一个只读属性,只是因为该单一的只读属性元数据不交换后,[DataContract]标记所有其他类和属性与[DataMember]并排除只读属性我很好去 - 谢谢 – 2018-01-29 09:51:58

0

有些时候,元数据或设置没有任何要做的事情;相反,我们可以简单地使用127.0.0.1而不是http:\ localhost \

6

我有这个问题,事实证明,当我重命名.svc文件时,对它的引用没有从Service1.svc重命名。运行项目范围搜索并用您的新名称替换.Service1

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %> 

Service="MyNamespace.Service1"应该读Service="MyNamespace.MyRenamedService"

+0

我有同样的问题。 – 2016-06-10 16:26:15

+0

我的问题也谢谢! – Ben 2017-10-27 15:57:36

0

我发现我有,因为我是使用从字典继承了DataContract的同样的错误。DataContract的正确设置应该如下:

[CollectionDataContract(Name = "AdditionalProperties", 
          ItemName = "Property", 
          KeyName = "Key", 
          ValueName = "Value")] 
public class AdditionalProperties : Dictionary<string, string> 
{ 
} 
0

这是我对此错误消息的体验,可能对他人有用。 我的WCF服务在windows 2008 server上工作正常。我将相同的解决方案复制到开发机器上,从解决方案中选择.svc文件,以便WCF测试客户机可以弹出。

有错误打开无法获取元数据,WCF测试客户端,安装无法加载等

关键的是,首先扬起的服务(http://localhost:port/Service),那么只有尝试WCF测试客户端。

0

在我的情况下,我没有启用BindingParams.AllowHttpGet。当它被设置为true,它工作...

相关问题