【问题标题】:WCF - Error: Cannot obtain MetadataWCF - 错误:无法获取元数据
【发布时间】:2012-04-28 21:16:50
【问题描述】:

当我尝试从 WCF 测试客户端运行我的应用程序时,我收到以下错误:

错误:无法从http://localhost:53867/MyAPI.svc 获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。
有关启用元数据发布的帮助,请参阅位于 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error
的 MSDN 文档 网址:http://localhost:53867/MyAPI.svc
元数据包含无法解析的引用:“http://localhost:53867/MyAPI.svc”。
内容类型应用程序/soap+xml;服务 http://localhost:53867/MyAPI.svc 不支持 charset=utf-8。
客户端和服务绑定可能不匹配。
远程服务器返回错误:(415) Unsupported Media Type.HTTP GET Error
URI:http://localhost:53867/MyAPI.svc
HTML 文档不包含 Web 服务发现信息。

这是我的一些 web.config:

    <system.web>
    <compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </assemblies>
    </compilation>
    <membership defaultProvider="CustomMembershipProvider">
        <providers>
            <clear/>
            <add name="CustomMembershipProvider" type="Namespace.Models.MyMembershipProvider" />
        </providers>
    </membership>
</system.web>
<system.serviceModel>
    <bindings>
        <wsHttpBinding>
            <binding name="MembershipBinding">
                <security mode ="Message">
                    <message clientCredentialType="UserName"/>
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="MyServiceBehavior">
                <serviceCredentials>
                    <userNameAuthentication
                    userNamePasswordValidationMode="MembershipProvider"
                    membershipProviderName="CustomMembershipProvider" />
                </serviceCredentials>
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>

我不知道是什么原因造成的?我的 Membership Provider 位于该位置,并且具有正确的命名空间。

【问题讨论】:

  • 您是否尝试过访问该网址并查看您是否从页面中收到特定错误?在尝试调试配置错误时,浏览服务的 URL 为我节省了大量时间。
  • 我没有看到您的配置中定义的任何端点?

标签: c# wcf wcf-security


【解决方案1】:

中移除name属性
   <behavior name="MyServiceBehavior"> 

   <binding name="MembershipBinding">

并添加 serviceMetadata 元素

    <behaviors>
        <serviceBehaviors>
            <behavior>
                <serviceMetadata httpGetEnabled="True"/>
                <serviceCredentials>
                <userNameAuthentication
                    userNamePasswordValidationMode="MembershipProvider"
                    membershipProviderName="CustomMembershipProvider" />
                </serviceCredentials>

            </behavior>
        </serviceBehaviors>
    </behaviors>

【讨论】:

  • 从行为元素中删除 name 属性对我有用。谢谢,
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 2011-08-28
  • 2011-04-01
  • 2012-11-26
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多