WCF Test Client无法添加服务,无法获取元数据

时间:2012-02-02 15:22:32

标签: c# wcf metadata

当我尝试添加服务时,有人能告诉我为什么会出现此错误吗?

  

错误:无法从http://myserver/myapp获取元数据。如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455上的MSDN文档。 WS-Metadata Exchange错误URI:http://myserver/myapp元数据包含无法解析的引用:“http://myserver/myapp”。远程服务器返回意外响应:(405)方法不允许。     远程服务器返回错误:(405)方法不允许.HTTP GET错误URI:http://myserver/myapp下载“http://myserver/myapp”时出错。请求失败,HTTP状态为403:Forbidden。

更新:我已经拥有以下端点,

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

我也设置了服务行为:

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

11 个答案:

答案 0 :(得分:9)

当您尝试从其中一个函数返回自定义类对象并且该函数在类声明中没有[DataContract]属性时,也会发生这种情况。 WCF无法确定您返回的类型,因此它会抛出标准消息。

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

答案 1 :(得分:9)

我有这个问题,事实证明当我重命名.svc文件时,它的引用还没有从Service1.svc重命名。运行项目范围搜索并将library("ggplot2") exdf <- mtcars ggp <- ggplot(data=exdf, mapping=aes(x=cyl, y=disp)) + stat_summary(fun.y="mean", geom="point", size=4) + scale_y_continuous(limits=c(1, 400)) ggp #compare to: range(exdf$disp) ggp <- ggplot(data=exdf, mapping=aes(x=cyl, y=disp)) + stat_summary(fun.y="mean", geom="point", size=4) + scale_y_continuous(limits=c(1, 500)) ggp 替换为新名称。

.Service1

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

答案 2 :(得分:5)

我明白了。我在我的一个端点上使用绝对路径而且我有多个端点。我将它改为相对路径,然后一切正常。

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

我在尝试将配置更改保存到项目时也得到了它,然后它告诉我保存/覆盖/忽略等等。它最终添加了一个项目子类型“designer”,一旦我删除它,它又回到了工作正常。

答案 3 :(得分:0)

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

我需要将引用更改为Copy Local = True

答案 4 :(得分:0)

我是WCF的新手,只是通过内部的WCF服务向我提交了一个项目。 我在Win7上使用VS2010中的WCF测试客户端时遇到了类似的问题。在尝试了本文和其他文章中的所有配置更改之后,我仍然遇到类似的错误。

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

答案 5 :(得分:0)

有时,元数据或设置无法完成任何操作;相反,我们可能只使用127.0.0.1而不是http:\ localhost \

答案 6 :(得分:0)

我发现由于我使用的继承自Dictionary的DataContract,我遇到了同样的错误。 DataContract的正确设置应如下所示:

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

答案 7 :(得分:0)

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

WCF测试客户端打开时出错,无法获取元数据,无法加载程序集等。

关键是,首先启动服务(http://localhost:port/Service)然后只尝试WCF测试客户端。

答案 8 :(得分:0)

就我而言,我没有启用BindingParams.AllowHttpGet。如果设置为true,则有效......

答案 9 :(得分:0)

请检查并读取所有错误文本。

在我的情况下,另一个dll有错误,但在上面的错误文本中显示了相同的错误。

答案 10 :(得分:0)

请检查是否可以解析该地址,以及是否指定了正确的虚拟目录。 myserver是否通过例如 ping myserver 解析为IP? myapp 是正确的虚拟目录吗?您已为wcf服务启用了元数据,但该网址很可能是错误的。