【问题标题】:WCF error - 'Cannot obtain metadata'WCF 错误 - “无法获取元数据”
【发布时间】:2023-03-25 11:25:02
【问题描述】:

我正在开发我的第一个 WCF 服务,但在尝试在 Visual Studio 中启动该服务时遇到错误。所以,它将在 Cassini 下运行。

错误是:

Error: Cannot obtain Metadata from http://localhost:1393/BEService.svc

这是我的配置

         <behaviors>
        <serviceBehaviors>
            <behavior name="metadataBehavior">
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="metadataBehavior" name="DataServices.BEService">
            <endpoint address="" binding="basicHttpBinding" contract="DataServices.IBEService" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:1393" />
                </baseAddresses>
            </host>
        </service>
    </services>

这是我定义服务契约的接口:

 [ServiceContract]
    public interface IBEService
    {
        [OperationContract]
        string Get271EDI(string EDI, DDKSLib.Enums.EDIRequestor requestor);
    }

这是实现它的类:

public class BEService : IBEService
    {

        public string Get271EDI(string EDI, Enums.EDIRequestor requestor)
        {
            return "this is a test";
        }
    }

我错过了什么?

【问题讨论】:

  • 你有定义你的合约的接口,以及实现它的类吗?如果是这样,您能否发布该代码?
  • 这个问题会不会与在 Cassini 上运行有关?
  • 它可能与 Cassini 有关,因为根据 this article,Cassini 会为每个实例分配一个新的端口号,这将使您的端点无效。

标签: .net wcf wcf-binding wcf-configuration


【解决方案1】:

也许我弄错了,但我认为当端点为空或相对且您不使用 IIS 时,您需要使用服务基址,不是吗?

<host>
   <baseAddresses>
       <add baseAddress="http://localhost:1393/MyService"/>
   </baseAddresses>
</host>

这是一篇关于WCF Addressing的文章

编辑:您应该更详细地检查您收到的错误。我认为有一些内部细节可以帮助你解决这个问题。可能是您的实现中的某些内容不符合 WCF 规则。

【讨论】:

  • 尝试了同样的错误。更新问题以显示变化。将阅读您的链接。
  • @BillMartin 您的更改看起来不像克里斯蒂建议的那样。您缺少 /MyService/ 部分。你确定添加了吗?
【解决方案2】:

更改 WCF 配置时,编辑器将所有配置移至 app.config 文件。但是,我阅读的很多文章都引用了 web.config 中的配置。因此,我将它们移至 web.config 并删除了 app.config。一切都开始工作了。然后,我遇到了this 问题,它回答了我关于何时使用 web.config 与 app.config 的问题。

【讨论】:

    猜你喜欢
    • 2012-04-28
    • 1970-01-01
    • 2011-08-28
    • 2011-04-01
    • 2012-11-26
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多