WCF测试客户端无法添加服务,无法获取元数据
本文关键字:获取 元数据 服务 添加 测试 WCF 客户端 | 更新日期: 2023-09-27 18:22:10
有人能告诉我为什么在添加服务时会出现这个错误吗?
错误:无法从中获取元数据http://myserver/myapp.如果这是您可以访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅MSDN文档,网址为http://go.microsoft.com/fwlink/?LinkId=65455.WS元数据交换错误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>
我遇到了这个问题,事实证明,当我重命名.svc文件时,对它的引用并没有从Service1.svc中重命名。运行项目范围的搜索并用新名称替换.Service1
。
<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %>
Service="MyNamespace.Service1"
应读取Service="MyNamespace.MyRenamedService"
当您试图从其中一个函数返回自定义类对象,而该函数在类声明中没有[DataContract]
属性时,也可能发生这种情况。WCF无法确定返回的类型,因此会抛出标准消息。
[Serializable]
[DataContract]
public class ServiceResult
{
....
}
我想明白了。我在我的一个端点上使用了一个绝对路径,我有不止一个。我把它改成了一条相对路径,然后一切都正常了。
此外,如果您的服务没有运行,并且可能与元数据无关,则可能会发生这种情况。如果你有一个ConfigurationErrorsException
,那么你也会看到这个结果。
我在尝试将配置更改保存到项目时也收到了它,然后它告诉我保存/覆盖/忽略等。它最终添加了一个"设计器"的项目子类型,一旦我删除它,它就恢复了正常工作。
有些时候对元数据或设置没有任何操作;相反,我们可以简单地使用127.0.0.1,而不是http:''localhost''
如果添加元数据端点不是您的问题。请在错误消息详细信息中进一步查看。我有一个不见了的图书馆;"无法加载文件或程序集*"。
我需要将引用更改为Copy Local=True
我是WCF的新手,刚刚收到一个包含WCF服务的项目。我在Win7上的VS2010中使用WCF测试客户端时遇到了类似的问题。在尝试了本文和其他文章中的所有配置更改后,我仍然会遇到类似的错误。
所以我放弃了,开始阅读WCF。在这里,我发现VS应该以管理员身份启动。以下是文章:WCF入门教程事实证明,我必须在选中"以管理员身份运行"的情况下启动VS2010。这解决了这个问题,我能够在VS2010中测试WCF服务。我发布这个答案是为了防止其他人过度关注"以管理员身份运行"。
我发现我有同样的错误,因为我使用的是从Dictionary继承的DataContract。DataContract的正确设置应如下所示:
[CollectionDataContract(Name = "AdditionalProperties",
ItemName = "Property",
KeyName = "Key",
ValueName = "Value")]
public class AdditionalProperties : Dictionary<string, string>
{
}
这是我处理此错误消息的经验,可能对其他人有用。我的WCF服务在Windows2008服务器上运行良好。我将相同的解决方案复制到了Dev机器上,从解决方案中选择了.svc文件,以便可以弹出WCF测试客户端。
错误打开的WCF测试客户端无法获取元数据,无法加载程序集等。
关键是,首先启动服务(http://localhost:port/Service)然后只尝试WCF测试客户端。
在我的情况下,我没有启用BindingParams.AllowHttpGet。当设置为true时,它就起作用了。。。
请检查并阅读所有错误文本。
在我的情况下,另一个dll有错误,但在上面的错误文本中显示相同的错误。
请检查是否可以解析该地址,以及是否指定了正确的虚拟目录。myserver是否解析为一个IP,例如ping myserver?myapp是正确的虚拟目录吗?您已经为wcf服务启用了元数据,但url很可能是错误的。