WCF 服务主机找不到任何服务元数据。请检查元数据是不是启用
Posted
技术标签:
【中文标题】WCF 服务主机找不到任何服务元数据。请检查元数据是不是启用【英文标题】:WCF service host cannot find any service metadata. Please Check if metadata is enabledWCF 服务主机找不到任何服务元数据。请检查元数据是否启用 【发布时间】:2018-10-27 20:37:00 【问题描述】:我的 App.config 文件是
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="WcfJsonRestService.Service1">
<endpoint address="http://localhost:8733/service1"
binding="webHttpBinding"
contract="WcfJsonRestService.IService1"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
我的 service1.cs 代码如下
using System;
using System.ServiceModel.Web;
namespace WcfJsonRestService
public class Service1 : IService1
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data/id")]
public Person GetData(string id)
// lookup person with the requested id
return new Person()
Id = Convert.ToInt32(id),
Name = "Leo Messi"
;
public class Person
public int Id get; set;
public string Name get; set;
最初这是给问题的
WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8733
所以我按照在 CMD 中执行以下代码
netsh http add urlacl url=http://+:8733/ user=WORK\Clara
执行此代码后,我面临以下新错误
我该如何解决这个问题?
我也尝试过更新 App.Config,如下面链接所述,但后来又遇到了一些错误
WCF service host cannot find any service metadata
【问题讨论】:
您提到的链接包含您的解决方案,您在更新 webconfig 时遇到了什么错误?如果在 IIS 上,请确保您正在编辑 Web.config(不是 App.config)。 @EzLo wenconfig 不存在,我有 app.config,我正在本地运行,即 Visual Studio 【参考方案1】:您缺少服务元数据行为配置。请添加以下配置:
<configuration>
<system.serviceModel>
<services>
<service name="WcfJsonRestService.Service1">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733"/>
</baseAddresses>
</host>
<endpoint address="service1"
binding="webHttpBinding"
contract="WcfJsonRestService.IService1"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled ="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
【讨论】:
我已添加 thsi 行,但由于 ServiceMetadataBehavior 的 HttpGetEnabled 属性设置为 true 且 HttpGetUrl 属性是相对地址,但我收到错误消息,但没有 http 基地址。要么提供一个 http 基地址,要么将 HttpGetUrl 设置为一个绝对地址。在 System.ServiceModel.Description.ServiceMetadataBehavior.CreateHttpGetEndpoints(ServiceDescription 描述,ServiceHostBase 主机,ServiceMetadataExtension mex) @MiteshJain:我已经更新了我的答案。您需要添加基地址。 感谢它的工作,因为我是 wcf 的新手,我不知道要添加什么:-)以上是关于WCF 服务主机找不到任何服务元数据。请检查元数据是不是启用的主要内容,如果未能解决你的问题,请参考以下文章
WCF调试错误:添加服务失败。服务元数据可能无法访问。请确保服务正在运行并且正在公开元数据。
WCF 测试客户端:添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据