gpt4 book ai didi

wcf - mexHttpBinding - 将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost 以启用对此协定的支持

转载 作者:行者123 更新时间:2023-12-04 00:16:38 24 4
gpt4 key购买 nike

我知道这已经被问过很多次,也回答过很多次,但是,所有提供的样本 应该 正在工作今天似乎不想为我工作。

当我尝试启动主机时,我不断收到以下错误:

“在服务 TraceService 实现的契约(Contract)列表中找不到契约(Contract)名称‘IMetadataExchange’。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost 以启用对此契约(Contract)的支持。”

根据 Microsoft 的示例,我的服务托管在托管的 Windows 服务主机中:http://msdn.microsoft.com/en-us/library/ms733069%28v=vs.90%29.aspx

这是我漂亮而简单的配置:

  <system.serviceModel>
<services>
<service name="Daff.Lae.Service.TraceService">
<endpoint address="" binding="wsHttpBinding" name="TraceService" contract="Contracts.Service.ITraceService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/TraceService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

当然,如果我删除这一行,当没有错误时问题会变得更有趣:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

任何帮助将非常非常非常感激:)

最佳答案

请务必指定 behaviorConfigurationservice您的配置元素,以便允许 httpGethttpsGet .

我看到您已经定义了一个名为 DefaultBehavior 的 serviceBehavior。 - 现在您需要做的就是添加behaviorConfiguration="DefaultBehavior"service元素,因此该行变为:

<service name="Daff.Lae.Service.TraceService" behaviorConfiguration="DefaultBehavior">

如果您没有为您的服务明确指定行为,则默认情况下不允许 HTTP GET 和 HTTPS GET,并且不会公开您的元数据。

关于wcf - mexHttpBinding - 将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost 以启用对此协定的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7441837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com