添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。

2024-02-28

EDIT:

我修改后web.config我没有收到错误,这很好......然后我添加一个新页面(html)并编写这个小代码来使用服务,如下所示:

 $("#btn12").click(function (event) {
                $.getJSON('http://localhost:3576/MyService.svc/GetCurrentUser', {},
                function (data) {
                    alert(data);
                });
                //return false;
            });

我在 FireBug 中看到以下错误:

http://localhost:3576/MyService.svc/GetCurrentUser
400 Bad Request

注意:我已经在同一个 wcf 项目上添加了 html 页面并自行运行该项目,所以我假设该服务也在运行......

这里可能出了什么问题?

END EDIT

我刚刚创建了一个新的 wcf 服务,当我从 VS 中按 f5 时,我在 WCF 测试客户端窗口中收到此错误:

添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。

错误:无法从中获取元数据http://localhost:3696/MobileService.svc http://localhost:3696/MobileService.svc如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。如需启用元数据发布的帮助,请参阅 MSDN 文档:http://go.microsoft.com/fwlink/?LinkId=65455 http://go.microsoft.com/fwlink/?LinkId=65455.

WS-元数据交换错误
URI: http://localhost:3696/MyService.svc http://localhost:3696/MyService.svc
元数据包含无法解析的引用:'http://localhost:3696/MyService.svc http://localhost:3696/MyService.svc'.

没有端点在监听http://localhost:3696/MyService.svc http://localhost:3696/MyService.svc可以接受该消息。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。

无法连接到远程服务器
无法连接,因为目标机器主动拒绝 127.0.0.1:3696
HTTP 获取错误
URI: http://localhost:3696/MyService.svc http://localhost:3696/MyService.svc
下载时出错'http://localhost:3696/MyService.svc http://localhost:3696/MyService.svc'.
无法连接到远程服务器
无法连接,因为目标机器主动拒绝 127.0.0.1:3696

我的配置:

<behaviors>
    <endpointBehaviors>
        <behavior name="MyService.MyService">
            <webHttp/>
        </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
        <behavior name="metadataBehavior">
            <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:2812/MyService.svc" />
        </behavior>
    </serviceBehaviors>
</behaviors>
<services>
    <service name="MyService.MyService" 
             behaviorConfiguration="metadataBehavior">
        <endpoint 
            address="http://localhost/MyService.svc" 
            binding="customBinding"
            bindingConfiguration="jsonpBinding" 
            behaviorConfiguration="MyService.MyService"
            contract="MyService.IMyService"/>
    </service>
</services>
<bindings>
    <customBinding>
        <binding name="jsonpBinding">
            <jsonpMessageEncoding/>
            <httpTransport manualAddressing="true"/>
        </binding>
    </customBinding>
</bindings>
<extensions>
    <bindingElementExtensions>
        <add name="jsonpMessageEncoding" type="Microsoft.Ajax.Samples.JsonpBindingExtension, MyService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
    </bindingElementExtensions>
</extensions>

您需要向您的服务添加元数据交换 (mex) 端点:

<services>
   <service name="MyService.MyService" behaviorConfiguration="metadataBehavior">
      <endpoint 
          address="http://localhost/MyService.svc" 
          binding="customBinding" bindingConfiguration="jsonpBinding" 
          behaviorConfiguration="MyService.MyService"
          contract="MyService.IMyService"/>
      <endpoint 
          address="mex" 
          binding="mexHttpBinding" 
          contract="IMetadataExchange"/>
   </service>
</services>

现在,您应该能够获取服务的元数据

Update:好的,所以您只需从 Visual Studio 启动它 - 在这种情况下,它将托管在内置 Web 服务器 Cassini 中。然而那个野兽only支持 HTTP - 您没有在绑定中使用该协议...

另外,由于您在卡西尼号中托管此服务,因此您的服务地址将由卡西尼号指定 - 您无需定义任何内容。

所以我的建议是:

  • 尝试使用http绑定(刚才用于测试)
  • 让它发挥作用
  • 一旦您知道它可以工作,请将其更改为您的自定义绑定并将其托管在 IIS 中

所以我会将配置更改为:

<behaviors>
   <serviceBehaviors>
      <behavior name="metadataBehavior">
         <serviceMetadata httpGetEnabled="true" />
      </behavior>
   </serviceBehaviors>
</behaviors>
<services>
   <service name="MyService.MyService" behaviorConfiguration="metadataBehavior">
      <endpoint 
          address=""   <!-- don't put anything here - Cassini will determine address -->
          binding="basicHttpBinding" 
          contract="MyService.IMyService"/>
      <endpoint 
          address="mex" 
          binding="mexHttpBinding" 
          contract="IMetadataExchange"/>
   </service>
</services>

一旦你有了这个,尝试做一个View in Browser在 Visual Studio 解决方案中的 SVC 文件上 - 如果这不起作用,那么您仍然遇到某种主要问题。

如果它有效 - 现在你可以在 VS 中按 F5,你的服务应该会出现,并使用WCF 测试客户端应用程序 http://msdn.microsoft.com/en-us/library/bb552364.aspx,您应该能够从 a) Cassini 启动服务的地址或 b) mex 地址(Cassini 的地址 +/mex)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。 的相关文章

  • 在 WCF 服务上启用 CORS。获取 HTTP 405:不允许的方法

    我正在尝试在 WCF 服务上启用 CORS 当我尝试从客户端发送请求时 该请求是使用OPTIONS动词 我总是得到一个HTTP 405 Method not allowed error 如果我尝试使用 Fiddler 并使用以下命令创建相同
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • rabbitmq 的 REST API

    有没有办法从 ajax 向 RabbitMQ 发送数据 我的应用程序由数千个 Web 客户端 用 js 编写 和 WCF REST 服务组成 现在我试图弄清楚如何为我的应用程序创建可扩展点 这个想法是有一个rabbitmq实例 它从放置在一
  • 如何在iPhone上读入并解析XML文件?

    我有一个返回 XML 文件的 Web 服务器 可以说http www foo bar foo php wantXML 1 http www foo bar foo php wantXML 1 我如何从服务器获取该文件 然后解析它以访问数据
  • WCF流模式确实很慢

    我想知道为什么流模式下的 WCF 与缓冲模式相比确实很慢 基本上 我从服务器读取大量数据 数据库访问 然后通过 WCF 将大量数据传输到其他客户端 我通过比较两种不同的传输模式进行了一些测试和基准测试 我创建了 2 个端点 第一个正在使用t
  • WCF 缓存解决方案 - 需要建议

    我工作的公司正在寻求实施缓存解决方案 我们托管了多个 WCF Web 服务 并且需要缓存某些可以持久保存和获取的值 无论客户端与服务的会话如何 我正在研究以下技术 缓存应用程序块 4 1 使用 HttpRuntime 缓存的 WCF TCP
  • 使用 C# 执行 Powershell commandlet 时出错

    我有以下经过测试且有效的代码 using new Impersonator Administrator dev dev RunspaceConfiguration runspaceConfiguration RunspaceConfigur
  • 还有其他原因说明我应该考虑忽略发出默认值是一种不好的做法吗?

    我已经使用 WCF 一段时间了 并且在客户端和服务器倾向于共同发布的地方 也就是说 新版本几乎总是同时发布 互操作性和版本控制不是问题 至少在这种情况下 MSDN 文档 DataMemberAttribute EmitDefaultValu
  • 堆内存问题

    有一个 WCF 自托管服务必须在 99 的时间内正常工作 有时我们会遇到这样的记忆问题 但问题发生后 服务一切正常 我们该如何处理这个问题 任何关于提供能够在不同情况下生存的强大服务的提示和要点都非常受欢迎 我不太确定问题出在哪里 但内存泄
  • Android:由于 Web 服务 Http 请求,活动显示时间过长

    我的一项活动是在启动应用程序时向 Web 服务发出 http 请求以获取一些天气数据 由于 Web 服务请求 活动需要 3 4 秒才能显示的问题 在实际设备上测试 我知道我没有以正确的方式这样做 我所做的就是在 onCreate 方法上 我
  • 无法从 java 发送 48681 字节消息以保护 wcf 服务

    我必须使用相互身份验证从 java 调用安全的 WCF 服务 一切工作正常 除了我无法发送大小超过 48680 字节的消息 因此 48680 字节的消息已成功发送 但 48681 字节的消息未成功发送 并且 java 应用程序因读取超时异常
  • 为什么 [System.ComponentModel.ToolboxItem(false)] 默认出现在 Asp.net Web 服务中

    谁能告诉我为什么 System ComponentModel ToolboxItem false 是在Asp net Web服务中使用的吗 或许你可以在这里找到一些答案 NET API 浏览器 ToolboxItemAttribute 布尔
  • 调试WCF时无法自动单步进入服务器

    我得到了可怕的 无法自动进入服务器 无法调试远程过程 这通常表明服务器上尚未启用调试 现在 我一直在读我需要添加
  • 如何在 .NET 中自定义 JSON 枚举的反序列化?

    我有以下示例 C 代码 它是使用 svcutil exe 应用程序从 xsd 自动生成的 DataContract public enum Foo EnumMember Value bar Bar 1 EnumMember Value ba
  • WCF 客户端 - 如何处理或忽略 MustUnderstand 标头元素?

    我正在写一个WCF使用 WS Security 使用非 Net Web 服务的客户端 服务的响应包含一个 Security 标头 其中 MustUnderstand 设置为 true 使用 ServiceModelListener 我确实看
  • 使用 Apache CXF 更改 WSDL xsd:complexType 名称

    我使用 Apache CXF 发布 Web 服务 即时 生成 WSDL 这很好用 但我想更改生成类型的命名约定 由于服务客户端 C 基于 WSDL 生成代码 因此默认的 xsd complexType 命名会导致类型名称以小写字母开头 以下
  • WCF - 在服务中抛出故障异常的开销

    我发布了一个question https stackoverflow com questions 81306 wcf faults exceptions versus messages关于使用消息与故障异常在服务之间传达业务规则 我的印象是
  • 在 WCF 中通过 net.pipe 运行多个服务

    我正在构建一个分布式应用程序 需要 6 种不同的服务 我必须使用 Visual Studio 2008 在我的 XP 笔记本电脑上演示该应用程序 是否可以同时在 localhost 上运行多个服务 所有服务都使用 net pipe 例如 n
  • Android Json结果处理

    我有这样的 Json 结果 array getJSONObject j 执行代码 WAT2 FreeIssuePrefix DisPaySchedulePrefix NextFreeIssueNo 1 NextReturnNo 20 Upl
  • 如何在 ColdFusion 中对 SOAP 请求正文进行数字签名?

    对我来说是新的挑战 我需要使用提供商颁发的证书对来自 ColdFusion 客户端应用程序的 SOAP 请求正文进行数字签名和加密 我还需要解密响应才能处理它 我已经搜索了几天 但一无所获 我找到了引用其他语言的信息 但在 ColdFusi

随机推荐